适配器模式
适配器模式(Adapter):将类的接口转换为客户希望的另一个接口。
适配器模式组成:
- 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
- 需要适配的类(Adaptee):需要适配的类或适配者类。
- 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。
UML图
个人理解
适配器就跟我们现实用的转接头一样,三插想要插在双插插座上需要转换器,苹果电脑连网线需要转换器,转换器就是我们这里的适配器一个意思,主要是让两个不匹配的事物结合。
代码
interface Target {
void doSome();
}
class Adaptee{
public void toDo(){
System.out.println("我是三插");
}
}
class Adapter implements Target{
private Adaptee adaptee=new Adaptee();
@Override
public void doSome() {
adaptee.toDo();
System.out.println("给你变成双插");
}
}
这里是持有对象的写法,然后通过适配器让三变二就能插入双插的插座
还有一种写法是继承
class Adapter extends Adaptee implements Target{
@Override
public void doSome() {
super.toDo();
System.out.println("给你变成双插");
}
}
也可以作为参数传进去,写法很多种,不用拘泥形式。
我认为设计模式并不是说一定要死死的套用固定的格式和写法,主要的还是用此类的想法来最优化的解决遇到的问题。
前面说的那些设计模式都有固定的格式拿来举例子,最终还是为了容易理解设计思想的本身。
个人认为在实际运用中其实有的设计模式并不适合业务的需求,往往需要组合或者变化,所以需要灵活运用思想而不是照搬。
适配器模式主要就是告诉我们,想要对接两个类或者接口,要遵循开闭原则,不要去改动原来的代码,那样可能或带来一系列的变化。
而是要通过一个新建的类来进行转换。