JAVA设计模式---适配器模式

1、几种关联模式的联系:

适配器模式:
将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。

外观模式:
提供了一个统一的接口,用来访问子系统的一群接口,外观定义了一个高层接口,让子系统更容易使用。实现了客户和子系统之间的松耦合

两者区别在于:
外观模式的意图是简化接口,而适配器的意图是将接口转换成不同接口。
当需要使用一个现有的类而其接口并不符合你的需要时,使用适配器;当需要简化并统一一个很大的接口或者一群负责的接口时,使用外观。

与装饰者区别:
适配器将一个对象包装起来以改变其接口,装饰者将一个对象包装起来以增加新的行为和责任。

2、实例:

旧的枚举器Enumeration(interface)包含如下元素:
  hasMoreElements();
  nextElement();

新的迭代器Iterator(interface)包含如下元素:
  hasNext();
  next();
  remove();

面对旧的遗留代码,如果需要对接新的代码,这时就用到了适配器,实现代码如下:

public class EnumerationIterator implements Iterator {
    Enumeration enum;

    public EnumerationIterator(Enumeration enum) {
        this.enum = enum;
    }

    @Override
    public boolean hasNext() {
        return enum.hasMoreElements();
    }

    @Override
    public Object next() {
        return enum.nextElement();
    }

    @Override
    public void remove() {
        throw new UnsupportedOperationException();
    }
}

3、适配器或外观模式需要遵循 “最少知识”原则,实施方针如下:

就任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法:
  1)该对象本身;
  2)被当做方法的参数而传递进来的对象;
  3)此方法所创建或实例化的任何对象;
  4)对象的任何组件(组件<==>被实例)
即:如果某对象是调用其他的方法的返回结果,不要调用该对象的方法。

原文地址:https://www.cnblogs.com/hunterCecil/p/5692246.html