您的位置:首页 > 运维架构 > 网站架构

一步步构建多层架构系列四之设计模式运用篇

2009-02-26 21:51 211 查看
在进入代码之前,来点正规的解释,看设计模式精解里面引用的四人团解释:

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

主要意思是:我们需要一种方法,为一个内容合适但接口不匹配的对象创建一个新的接口。

先来个场景,我们就使用设计模式精解里面的场景,现在有一个图形类,此类的行为有:

设定一个Shape对象的位置

获取一个Shape对象的位置

显示一个Shape对象(display)

填充一个Shape对象(fill)

设置一个Shape对象的颜色

擦除一个Shape对象(undisplay)

目前在我的系统里已经实现了点、线、正方形,现在客户要求我们实现一个圆形,当然了,我们会建立一个Circle类来继承Shape,然后需要去实现display、fill、undisplay方法(其它的方法可以统一在抽象类中实现),但是这时我发现同事已经实现了一个画圆的类,但是他的方法名为displayIt、fillIt、undisplayIt,我们不能直接使用这个类,因为那样无法保持多态性,而有时候,我们也不能要求组件类改写方法名。

这时,适配器模式就派上用场了,看代码:

class Circle :Shape{

private XXCircle pxc;

public Circle(){

pxc = new Circle();

}

public void display(){

pxc.displayIt();

}

}

这样,Shape充当了Target,XXCircle作为被适配对象(Adaptee),Circle作为适配对象(Adapter)。

粗看上去,适配器模式与代理模式非常相象,他们都可视为一个对象提供一个前置,但是适配器模式的用意是改变所要考虑对象的接口,而代理模式并不能改变所代理的对象的接口,在这一点上两个模式有明显的区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: