`

适配器模式

 
阅读更多

1、类的适配器模式:有一个待适配的类Source,目标接口Targetable,通过Adapter将Source的功能扩展到Targetable。实现:Adapter继承Source拥有Source的方法,去适配Targetable。
2、对象适配器模式:Adapter不继承Source,只是持有Source的实例,用Source的方法去适配Targetable。
3、接口适配模式:不想实现目标接口所有的抽象方法,借助一个Wrapper抽象类实现接口,再由Wrapper的子类具体实现想要实现的方法。


对象适配模式:
1、装饰模式:Source类和Decorator类都实现Sourecable接口,Decorator类动态持有Source类的实例,对接口方法进行动态扩展。
装饰器模式的应用场景:
a 需要扩展一个类的功能。
b 动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删。)
缺点:产生过多相似的对象,不易排错!

2、代理模式:Source类和Proxy类都实现Sourecable接口,Proxy类在内部创建Source类的实例,对接口方法进行修改。

装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话 说,用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。并且,当我们使用装饰器模 式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器。

3、外观模式:使用一个外观类,其方法分别由各个具体类实现,外观类持有各个具体类,将方法解耦为各个具体类。

4、桥接模式:把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。

5、组合模式定义:将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.
a.使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。
b.更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码

6、享元模式:当一个应用中使用了大量的对象,这些对象造成了很大的存储开销,而对象的大部分状态或参数都是相同(内部状态)的时候,可以考虑使用享元模式,使用享元模式可以是这些对象引用都共享相同的实例,降低存储开销,而对象之间的不同的状态参数(外部状态)则使用外部参数传入来实现。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics