浅谈适配器设计模式与观察者设计模式

浅谈适配器设计模式与观察者设计模式

直接复制doc 可能没有图

写在前面:

阅读该文档基本要求:了解面对对象编程,理解面对对象的基本概念。

 

一.           适配器设计模式

1.1经典概念诠释

在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。(来自维基百科)

适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。(来自head first 设计模式)

1.2 适配器设计模式的分类

1.>适配器设计模式委托实现形式(对象适配器模式)。

2.>适配器设计模式继承实现形式(类适配器模式)

1.3实际生活中物理意义的适配器例子

电脑上用的PS/2接口转USB接口的适配器就是一种典型的实际生活中物理意义的适配器,如下图:

1PS/2USB适配器

适配器设计模式其实顾名思义,它使得两个相互交互的模块能够很好整合成为一个整体,这和我们平常生活中物理意义的适配器的思想是一样的,唯一的不同他只是在软件开发中应用。

1.3适配器模式简单实例讲解(设计模式的故事:猫和狗的故事)

故事的开头总是这样:很久很久以前有一只猫,他很想和狗交流,并想用自己的猫食换取阿狗的骨头。但是由于它们语言很不通交流很困难,双方比划了半天,谁也没有听懂对方在说什么。因为能和狗狗交流的只有狗语者。

%#我要骨头#@$

 

whatI can’t understand

1.3.1委托形式实现适配器模式(有时也叫包装 wrapper pattern

猫清楚的知道,要想能和狗狗进行交流,就必须要有说狗语能力(即成为狗语者),但是它不会狗语,而且也不想成为狗语者,不过幸运的是,这只猫虽然不会狗语,但是它是一名软件工程师,而且学过适配器设计模式,它清楚要和狗狗们对话必须要找个会狗语的委托人(即一个狗语者),这个想法使得他很快想起了适配设计模式的委托形式实现,为了分析这个计划的可行性,于是他用UML起草了这份计划书(类图)。

2

其中DogCommunicate函数只接受类型为DogSpeaker的参数

对于该类图的阐述:

Translator类实现了一个DogSpeaker的接口,他成为狗语者。所以translator通过狗语者的身份能够和狗进行交流,因为Dog类中的communicate函数只接受DogSpeaker类型的参数。从而如果老猫同志要和狗狗进行交流,他可以委托一位Translator作为发言人 和狗狗交流。那么具体Translator是怎样做的呢,我看看Translator中具有一个Cat实例,这个Cat的实例就是使得Translator通过自己DogSpeaker身份(狗语者)和狗狗进行交流时,能够真正的调用Cat类中的talk()函数即利用身份帮助猫表达观点,所以Translator其实只是担任了一个发言者的作用或是包装者的作用,而真正表达还是老猫的言论即Cat类中的talk。这样便实现了猫和狗的交流。(看后面简单的代码就能够明白)

 

Java实现对象适配器模式源码:

你可能感兴趣的:(设计模式,string,class,interface,insert,vector)