标签:this 模式 static 需要 com span https 简单工厂模式 开源
适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。使原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器模式有“类适配器”和“对象适配器”两种不同的形式。
类的适配器模式是把适配的类的API转换成为目标类的API。
UML类图:
在上图中可以看出:
创建适配器类(Adapter):
//适配器Adapter继承自Adaptee,同时又实现了目标(Target)接口。 public class Adapter extends Adaptee implements Target { //目标接口要求调用Request()这个方法名,但源类Adaptee没有方法Request() //因此适配器补充上这个方法名 //但实际上Request()只是调用源类Adaptee的SpecificRequest()方法的内容 //所以适配器只是将SpecificRequest()方法作了一层封装,封装成Target可以调用的Request()而已 @Override public void Request() { this.SpecificRequest(); } }
定义具体使用目标类,并通过Adapter类调用所需要的方法从而实现目标:
public class AdapterPattern { public static void main(String[] args){ Target mAdapter = new Adapter(); mAdapter.Request(); } }
与类的适配器模式相同,对象的适配器模式也是把适配的类的API转换成为目标类的API。
与类的适配器模式不同的是,对象的适配器模式不是使用继承关系连接到Adaptee类,而是使用委派关系连接到Adaptee类。
在上图中可以看出:
Adapter与Adaptee是委派关系,这决定了适配器模式是对象的。
class Adapter implements Target{ // 直接关联被适配类 private Adaptee adaptee; // 可以通过构造函数传入具体需要适配的被适配类对象 public Adapter (Adaptee adaptee) { this.adaptee = adaptee; } @Override public void Request() { // 这里是使用委托的方式完成特殊功能 this.adaptee.SpecificRequest(); } }
定义具体使用目标类,并通过Adapter类调用所需要的方法从而实现目标:
public class AdapterPattern { public static void main(String[] args){ //需要先创建一个被适配类的对象作为参数 Target mAdapter = new Adapter(new Adaptee()); mAdapter.Request(); } }
https://www.cnblogs.com/heliusKing/p/11577837.html
模板方法模式是通过父类建立框架,子类在重写了父类部分方法之后,在调用从父类继承的方法,产生不同的效果,通过修改子类,影响父类行为的结果,模板方法在一些开源框架中应用非常多,它提供了一个抽象类,然后开源框架写了一堆子类,如果需要扩展功能,可以继承此抽象类,然后覆写protected基本方法,然后在调用一个类似TemplateMethod()的模板方法,完成扩展开发。
标签:this 模式 static 需要 com span https 简单工厂模式 开源
原文地址:https://www.cnblogs.com/jingpeng77/p/13942653.html