设计模式(六)适配器模式(Adapter)-结构型
2015-04-27 22:49
501 查看
适配器模式Adapter
有多个人使用一个接口A的方法,不同的人需要不同的方法实现,这时候就需要用到适配器模式
可以先使用一个类B实现该接口,但是其中的方法全不进行任何实现 ,接着谁需要里面的方法,就自己定义一个类C_X然后继承类B,覆盖其中的需要的方法。
适配器分为对象适配器和类适配器:对象适配器实现目标类的接口,依赖适配者类;类适配器继承适配者,并实现目标类的接口。
适配器模式的类图
适配器原理图
适配器模式的代码实现
将Map转为List的适配器实例
(1)适配器模式也是一种包装模式,与之前的 Decorator 装饰模式同样具有包装的功能;此外,对象适配器模式还具有显式委托的意思在里面(其实类适配器也有这种意思,只不过比较隐含而已),那么我在认为它与 Proxy 代理模式也有点类似;
(2)从上面一点对比来看, Decorator 、 Proxy、 Adapter 在实现了自身的最主要目的(这个得看各个模式的最初动机、描述)之外,都可以在包装的前后进行额外的、特殊的功能上的增减,因为我认为它们都有委托的实现意思在里面;
(3)我所看的书中说适配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用。
有多个人使用一个接口A的方法,不同的人需要不同的方法实现,这时候就需要用到适配器模式
可以先使用一个类B实现该接口,但是其中的方法全不进行任何实现 ,接着谁需要里面的方法,就自己定义一个类C_X然后继承类B,覆盖其中的需要的方法。
适配器分为对象适配器和类适配器:对象适配器实现目标类的接口,依赖适配者类;类适配器继承适配者,并实现目标类的接口。
适配器模式的类图
适配器原理图
适配器模式的代码实现
// 定义客户端期待的接口 public class Target{ /// <summary> /// 使用virtual修饰以便子类可以重写 /// </summary> public virtual void Request(){ Console.WriteLine("This is a common request"); } } // 定义需要适配的类 public class Adaptee{ public void SpecificRequest(){ Console.WriteLine("This is a special request."); } } /// 定义适配器 public class Adapter:Target{ // 建立一个私有的Adeptee对象 private Adaptee adaptee = new Adaptee(); /// <summary> /// 通过重写,表面上调用Request()方法,变成了实际调用SpecificRequest() /// </summary> public override void Request(){ adaptee.SpecificRequest(); } }客户端代码
class Program{ static void Main(string[] args){ // 对客户端来说,调用的就是Target的Request() Target target = new Adapter(); target.Request(); Console.Read(); } }
将Map转为List的适配器实例
public class PeopleAdapter extends ArrayList<Object>{ private Map<?,?> map; public PeopleAdapter(Map<?,?> map){ super(); this.map = map; } public int size(){ return map.size(); } public Object get(int i) { return map.get(i); } }模式总结
(1)适配器模式也是一种包装模式,与之前的 Decorator 装饰模式同样具有包装的功能;此外,对象适配器模式还具有显式委托的意思在里面(其实类适配器也有这种意思,只不过比较隐含而已),那么我在认为它与 Proxy 代理模式也有点类似;
(2)从上面一点对比来看, Decorator 、 Proxy、 Adapter 在实现了自身的最主要目的(这个得看各个模式的最初动机、描述)之外,都可以在包装的前后进行额外的、特殊的功能上的增减,因为我认为它们都有委托的实现意思在里面;
(3)我所看的书中说适配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用。
相关文章推荐
- 设计模式06: Adapter 适配器模式(结构型模式)
- "围观"设计模式(11)--结构型之适配器模式(Adapter Pattern)
- 结构型设计模式---Adapter模式(适配器模式)
- Java经典设计模式-结构型模式-适配器模式(Adapter)
- 设计模式(8)の结构型の适配器模式(Adapter)
- 设计模式 一 适配器模式 Adapter(结构型模式)
- 设计模式(七):Adapter 适配器模式 -- 结构型模式
- 设计模式 (10)——适配器模式(Adapter Pattern,结构型)
- 设计模式(五)适配器模式Adapter(结构型)
- 结构型设计模式---适配器模式(adapter)
- 跟着实例学习设计模式(8)-适配器模式adapter(结构型)
- 【设计模式学习笔记七】【结构型模式】【适配器模式(Adapter)】
- 设计模式(结构型)之适配器模式(Adapter Pattern)
- 23种设计模式(6)_结构型_适配器模式(Adapter Pattern)
- 设计模式--适配器模式Adapter(结构型)
- 设计模式(五)适配器模式Adapter(结构型)
- JAVA设计模式(6) —<结构型>适配器模式(Adapter)
- 设计模式(六):适配器模式Adapter(结构型模式)
- 设计模式(6)-结构型-适配器模式(Adapter)(个人笔记)
- 设计模式(五)适配器模式Adapter(结构型)