Just do IT.

HeadFirst设计模式

一、适配器模式 | Adapter Pattern

ListView用于显示列表数据,但是作为列表数据集合有很多形式,有Array,有Cursor等,我们需要对应的适配器作为桥梁,处理相应的数据(并能形成ListView所需要的视图)。 正是因为定义了这些适配器接口和适配器类,才能使我们的数据简单灵活而又正确的显示到了adapterview的实现类上。

在设计模式体系中属于结构型模式,分为三类:

由于类和接口的适配器模式需要适配器继承原有的类,而纯面向对象语言Java、C#都是不支持多继承的,这在一定程度上制约了类和接口的适配器模式的使用场景,故使用的时候要注意。

使用目的:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

类适配器模式

说明: 当新接口出现的时候,由于和老的接口不兼容,这个时候,我们采用一个适配器类实现新的接口并且继承老的业务类,这样就能同时处理新老业务。 示例代码:

/** * 原始类 */oldFunction() {System.out.println(“oldFunction:Source”);}}oldFunction();// 新接口void newFunction();} {public Adapter() {super();}@Overridepublic void newFunction() {System.out.println(“newFunction:Adapter”);}}{main(String args[]) {Target target = new Adapter();target.oldFunction();target.newFunction();}}

输出:

对象适配器模式

说明:当新接口出现的时候,由于和老的接口不兼容,这个时候,我们采用一个适配器类实现新的接口并在内部持有一个老业务逻辑的对象,这样就能把对老接口的调用全部中转给老的业务逻辑,从而解决接口的兼容性问题 示例代码:

/** * 原始类 */class Source {() {System.out.println(“oldFunction:Source”);}}interface Target {void oldFunction();// 新接口void newFunction();}// 适配器,用来做接口转换class Adapter implements Target {// 适配器内部持有的原始类对象private Source mSource;public Adapter(Source source) {mSource = source;}() {// 这里调用原始类中的方法mSource.oldFunction();}() {System.out.println(“newFunction:Adapter”);}}{(String args[]) {Source source = new Source();Target target = new Adapter(source);target.oldFunction();target.newFunction();}}

输出:

接口适配器模式

说明:也叫缺省适配器模式,主要解决接口的复用问题:有时候可能我们的业务只需要使用接口中的某一个方法而不是全部方法,,但是由于接口的语言特性而不得不实现全部的抽象方法,这样就会使得接口的使用过程很麻烦,特别是接口中存在很多抽象方法的时候。面对接口的这类问题,我们可以采用一个抽象类(也可以不是抽象类)去实现接口,然后让我们的类去继承这个抽象类同时只重写我们感兴趣的方法即可。 示例代码:

function1();void function2();void function3();void function4();} Target {@Overridepublic void function1() {System.out.println(“function1:TargetWrapper”);}@Overridepublic void function2() {}@Overridepublic void function3() {}@Overridepublic void function4() {}} TargetWrapper {public Adapter() {super();}@Overridepublic void function2() {System.out.println(“function4:Adapter”);}}{main(String args[]) {Target target = new Adapter();target.function1();target.function2();}}

输出:

二、工厂模式 | Factory Pattern

赚钱之道很多,但是找不到赚钱的种子,便成不了事业家。

Just do IT.

相关文章:

你感兴趣的文章:

标签云: