适配器模式和外观模式

适配器模式

 定义:将一个类的接口,转换成客户期望的另一个接口。适配器让原本不兼容  
的类可以合作无间。

实际做法是,让一个类继承目标接口。
这样的做法好处有
1.可以复用类,省去编写另一个类的工作
2.当需要统一接口时,可以发挥作用
适配器模式主要有2种:类适配器模式、对象的适配器模式、接口的适配器模式
java没有类适配器,主要使用对象的适配器
在这里插入图片描述
可以看出,有3个对象
client target的使用者
target client所需的目标接口
Adapter 转换器类,将Adatee转化为目标接口
Adaptee 被转换的类,用该类实现目标接口

代码胜千言
充当target接口

package 设计模式.适配器模式;

/**
 * Created by Administrator on 2018/10/8.
 */
public interface bigCat {
    public void action();
}

实现接口的类

package 设计模式.适配器模式;

/**
 * Created by Administrator on 2018/10/8.
 */
public class cat implements bigCat{
    public cat() {
        System.out.println("我是一只猫,快乐的星猫");
    }

    public void action(){

    }
}

适配器类

package 设计模式.适配器模式;

/**
 * Created by Administrator on 2018/10/8.
 */
public class fatTiger implements bigCat{

    private tiger t;

    public fatTiger() {
    }

    public fatTiger(tiger t){
        this.t=t;
        System.out.println("我是胖虎,我潜入了猫群");
    }

    @Override
    public void action() {
        t.action();
    }

    public static void main(String[] args){
        bigCat aCat=new cat();
        tiger t=new tiger();
        bigCat fakeCat=new fatTiger(t);

        if(aCat.getClass()!=fakeCat.getClass()){
            System.out.println("胖虎die");
        }
    }
}

tiger类

package 设计模式.适配器模式;

/**
 * Created by Administrator on 2018/10/8.
 */
public class tiger {
    public void action() {
        System.out.println("我是胖虎,我现在很饿");
    }
}

执行。。
在这里插入图片描述

外观模式

外观模式和适配器模式差不多
可以借用一下headfirst设计模式里的例子
当你要建立自己的家庭影院时,必须执行:
打开爆米花机,开始爆米花1,将灯光调暗,放下屏幕,打开投影机
等等
你要关掉时,还要执行相反操作,,,
相当麻烦,所以外观模式就营运而生,将这些接口分装起来,组成一个个
子系统,供给用户调用,比如openMovie(),closeMovie()等等。
这样可以使在client类不必进行一系列操作,使得从组件的子系统解耦,
但如果用户想单独关灯也可以,不影响子系统,达到简化接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值