设计模式--适配器模式,学习笔记
2014-03-29 23:32
671 查看
一般适配器模式类图如下:
图中Adapter与Adaptee的继承关系也可以换成关联关系(实心箭头)
已知一个实现类xxCircle实现了一个display()的方法。对这个类进行转换,可以让其他Shape类实现display()方法;
所以我们需要一个适配器Adapter,可以得出类图如下:
这道题是上设计模式课时老师课堂的一道练习题。正确答案或是如上图。思考看来,发现一个问题:
Adatper如何知道Target子类的信息呢?假设我需要产生一个Line对象,使用Adapter如何根据Line类来更改display()的方法实现呢??
得出如下类图:
每个适配器对应不同的子类,对目标类进行不同处理,得到不同的适配效果。
而查阅了该模式的优缺点如下:
类适配器还有的优点:
1、由于适配器类是适配者类的子类,因此可以再适配器类中置换一些适配者的方法,使得适配器的灵活性更强。
2、把多个不同的适配者适配到同一个目标,也就是说,同一个适配器可以把适配者类和他的子类都适配到目标接口。
类适配器的缺点:
1、对于Java、C#等不支持多重继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口。
图中Adapter与Adaptee的继承关系也可以换成关联关系(实心箭头)
1.解决的问题
将一个系统的接口转换成为另外一种形式,从而使原来不能直接调用的接口变得可以调用。2.原理
主要由3部分组成:目标类、源类、和适配器类。3.基本代码
/** * 目标类 * */ public interface Target { void request(); } /** * * 源类 * */ public class Adaptee { public void request(){ System.out.println("method run!"); } } /** * * 适配器类 * */ class Adapter implements Target { private Adaptee adaptee; public Adapter (Adaptee adaptee) { this.adaptee = adaptee; } @Override public void request() { //经过接口维护,将adaptee重用 this.adaptee.request(); System.out.println("method change!"); } }
public static void main(String[] args) { AdapterGof adaptergof = new AdapterGof(); Adaptee adaptee = adaptergof.new Adaptee(); Target adapter =adaptergof.new Adapter(adaptee); }
4.例子-得出疑问
已知一个实现类xxCircle实现了一个display()的方法。对这个类进行转换,可以让其他Shape类实现display()方法;所以我们需要一个适配器Adapter,可以得出类图如下:
这道题是上设计模式课时老师课堂的一道练习题。正确答案或是如上图。思考看来,发现一个问题:
Adatper如何知道Target子类的信息呢?假设我需要产生一个Line对象,使用Adapter如何根据Line类来更改display()的方法实现呢??
得出如下类图:
每个适配器对应不同的子类,对目标类进行不同处理,得到不同的适配效果。
而查阅了该模式的优缺点如下:
类适配器还有的优点:
1、由于适配器类是适配者类的子类,因此可以再适配器类中置换一些适配者的方法,使得适配器的灵活性更强。
2、把多个不同的适配者适配到同一个目标,也就是说,同一个适配器可以把适配者类和他的子类都适配到目标接口。
类适配器的缺点:
1、对于Java、C#等不支持多重继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口。
相关文章推荐
- 设计模式学习笔记(七)之适配器模式(Adapter)
- 【HeadFirst 设计模式学习笔记】7 适配器模式和外观模式
- 步步为营 .NET 设计模式学习笔记 六、Adapter(适配器模式)
- 设计模式学习笔记十一:适配器模式(Adapter Pattern)
- java设计模式学习笔记--适配器模式
- HeadFirst 设计模式学习笔记6--适配器模式和外观模式
- 设计模式学习笔记之适配器模式、外观模式
- 设计模式学习笔记——适配器模式
- 设计模式学习笔记-适配器模式
- 【设计模式学习笔记七】【结构型模式】【适配器模式(Adapter)】
- 设计模式学习笔记--适配器模式
- 设计模式学习笔记-适配器模式
- 设计模式学习笔记十四:适配器模式
- 设计模式学习笔记——适配器模式
- 设计模式之禅学习笔记--适配器模式
- 设计模式学习笔记十一:适配器模式(Adapter Pattern)
- 设计模式学习笔记(3)——适配器模式(Adapter Pattern)
- 设计模式学习笔记十四:适配器模式
- 学习设计模式笔记--适配器模式
- Head First 设计模式学习笔记 —— 适配器模式