适配器模式,外观模式

适配器模式

把一个类的接口转换成客户端所期待的另一种接口,从而使原接口不匹配而无法在一起工作的两个类能在一起工作。
适配器模式所涉及的角色包括:目标,客户,被适配者,适配器。目标(CTarget):定义一个客户端使用的特定接口。客户(CClient):使用目标接口,与和目标一致的对象合作。被适配者(CAdaptee):一个现存需要匹配的接口。适配器(CAdapter):负责将CAdaptee的接口转换成CTarget的接口。适配器是一个具体的类。这是本模式的核心。由此可见,客户端调用Adapter接口的时候,Adapter便会调用Adaptee的操作相应请求,该模式就完成了接口的适配过程。
适配器分为类适配器和对象适配器。

类适配器:CAdapter实现了CTarget接口,并继承了CAdaptee来实现重用。

//Adaptee.java
public class Adaptee{
    public void specialRequest(){
        System.out.println("Call specificRequest() in adaptee");
    }
}
//Target.java
public interface Target{
    public void request();
}

//Client.java
public class Client{
    public static void main(String[] args){
        Target t = new Adapter();
        t.request();
    }
}

//Adapter.java
public class Adapter extends Adaptee implements Target{
    public void request(){
        this.specialRequest();
    }
}

其实就是客户调用Target接口的request方法,实际就是调用其父类Adaptee的specialRequest方法。

这里写图片描述

对象适配器
对象适配器,就是在Adapter实现中,声明一个Adaptee对象来调用,而不是通过继承。

//Adapter.java
public class Adapter implements Target{
    Adaptee adaptee = new Adaptee();
    public void request(){
        adaptee.specialRequest();
    }
}

关于何时使用适配器模式
适配器模式可以将一个类的接口和另一个类的接口匹配起来,使用的前提是你不能或者不想修改原来的适配器母接口。例如,你向第三方购买了一些类,控件,但是没有源程序,这时使用适配器模式,你可以统一对象访问接口,但客户调用可能需要变动。
如果两个类所做的事情相同或者相似,但是他们有不同的接口的时候,可以使用适配器模式。
一般都是在软件开发后期或者维护的时候再考虑使用适配器,因为设计阶段没必要把功能类的接口设计不同。


外观模式

外观模式定义了一个将子系统的一组接口集成在一起的高层接口,以提供一个一致的界面。通过这个界面,其他系统可以方便地调用子系统中的功能,而忽略子系统内部发生的变化。
使用场合

  1. 为一个比较复杂的子系统提供一个简单的接口;
  2. 将客户程序与子系统的实现部分分离,提高子系统的独立性和可移植性;
  3. 简化子系统间的依赖关系。

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值