适配器模式(Adapter)
2014-09-06 15:31
253 查看
本文主要介绍适配器模式:
意图:使用不同接口的类所提供的服务为客户端提供它所期望的接口
种类:类适配器,对象适配器
以下代码是类适配器的一个简单实现,其中CarInfo是客户端使用的接口,Car是服务提供者目前提供的类,CarAdapter继承了Car类并实现了CarInfo接口以实现CarInfo和Car之间的适配。
下面代码是对象适配器的一个实例,上述类适配器的使用场景是客户端定义了需要适配的接口CarInfo,当客户端没有定义这样的接口时,则需要使用对象适配器;对于下面这个例子而言,CarAdapter需要继承CarInfo,而Java是单继承语言,所以就不能继承Car类,而只能通过组合在CarAdapter类中新建一个Car类型的域。
对象适配器和类适配器的比较:
对象适配器适用于需要从多个对象获取服务。
对象适配器比类适配器脆弱,因为它没有像类适配器那样的接口规范,当上述的对象适配器中CarAdapter需要依赖CarInfo中的相关字段时,和可能会因为其他地方修改该字段而导致程序出错,而接口作为一种API声明不会存在这类问题。
意图:使用不同接口的类所提供的服务为客户端提供它所期望的接口
种类:类适配器,对象适配器
以下代码是类适配器的一个简单实现,其中CarInfo是客户端使用的接口,Car是服务提供者目前提供的类,CarAdapter继承了Car类并实现了CarInfo接口以实现CarInfo和Car之间的适配。
interface CarInfo{ String getCarName(); String getCarColor(); } class Car{ private String name = "Audi"; private String color = "Black"; public String getName(){ return name; } public String getColor(){ return color; } } class CarAdapter extends Car implements CarInfo{ @Override public String getCarName(){ return super.getName(); } @Override public String getCarColor(){ return super.getColor(); } }
下面代码是对象适配器的一个实例,上述类适配器的使用场景是客户端定义了需要适配的接口CarInfo,当客户端没有定义这样的接口时,则需要使用对象适配器;对于下面这个例子而言,CarAdapter需要继承CarInfo,而Java是单继承语言,所以就不能继承Car类,而只能通过组合在CarAdapter类中新建一个Car类型的域。
class CarInfo { public String getCarName(){ return "Default Car Name is : Benz"; } public String getCarColor(){ return "Default color is : Red"; } } class Car{ private String name = "Audi"; private String color = "Black"; public String getName(){ return name; } public String getColor(){ return color; } } class CarAdapter extends CarInfo{ Car audi = new Car(); @Override public String getCarName(){ return audi.getName(); } @Override public String getCarColor(){ return audi.getColor(); } }
对象适配器和类适配器的比较:
对象适配器适用于需要从多个对象获取服务。
对象适配器比类适配器脆弱,因为它没有像类适配器那样的接口规范,当上述的对象适配器中CarAdapter需要依赖CarInfo中的相关字段时,和可能会因为其他地方修改该字段而导致程序出错,而接口作为一种API声明不会存在这类问题。
相关文章推荐
- .Net设计模式 Adapter 适配器模式(结构型模式)Adapter Pattern
- 第7章 适配器模式(Adapter Pattern)
- 适配器模式(Adapter Pattern)
- .NET设计模式(8):适配器模式(Adapter Pattern)
- 设计模式之适配器模式(Adapter Pattern)
- C# 适配器模式(Adapter)
- java设计模式之适配器模式(Adapter)
- 适配器模式(Adapter):类适配器、对象适配器
- 7.适配器模式(Adapter Pattern)
- 设计模式笔记9:适配器模式(Adapter Pattern)
- 适配器模式(Adapter Pattern)
- 结构型模式之适配器模式(Adapter)
- 设计模式(六)----- 适配器模式(Adapter)----(JAVA版)
- 适配器模式Adapter
- 适配器模式【Adapter Pattern】
- 【设计模式】—— 适配器模式Adapter
- 设计模式(7)-Adapter 适配器模式
- 面向对象设计模式纵横谈:Adapter 适配器模式(笔记记录)
- PHP设计模式——适配器模式(Adapter)
- Adapter 适配器模式