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

在进入代码之前,来点正规的解释,看设计模式精解里面引用的四人团解释:
将一个类的接口转换成客户希望的另外一个接口。 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)。

粗看上去,适配器模式与代理模式非常相象,他们都可视为一个对象提供一个前置,但是适配器模式的用意是改变所要考虑对象的接口,而代理模式并不能改变所代理的对象的接口,在这一点上两个模式有明显的区别。

转载于:https://www.cnblogs.com/mfm11111/archive/2009/02/26/1399105.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值