适配器模式和外观模式

た 入场券 2022-05-08 09:42 309阅读 0赞

适配器模式

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

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

代码胜千言
充当target接口

  1. package 设计模式.适配器模式;
  2. /**
  3. * Created by Administrator on 2018/10/8.
  4. */
  5. public interface bigCat {
  6. public void action();
  7. }

实现接口的类

  1. package 设计模式.适配器模式;
  2. /**
  3. * Created by Administrator on 2018/10/8.
  4. */
  5. public class cat implements bigCat{
  6. public cat() {
  7. System.out.println("我是一只猫,快乐的星猫");
  8. }
  9. public void action(){
  10. }
  11. }

适配器类

  1. package 设计模式.适配器模式;
  2. /**
  3. * Created by Administrator on 2018/10/8.
  4. */
  5. public class fatTiger implements bigCat{
  6. private tiger t;
  7. public fatTiger() {
  8. }
  9. public fatTiger(tiger t){
  10. this.t=t;
  11. System.out.println("我是胖虎,我潜入了猫群");
  12. }
  13. @Override
  14. public void action() {
  15. t.action();
  16. }
  17. public static void main(String[] args){
  18. bigCat aCat=new cat();
  19. tiger t=new tiger();
  20. bigCat fakeCat=new fatTiger(t);
  21. if(aCat.getClass()!=fakeCat.getClass()){
  22. System.out.println("胖虎die");
  23. }
  24. }
  25. }

tiger类

  1. package 设计模式.适配器模式;
  2. /**
  3. * Created by Administrator on 2018/10/8.
  4. */
  5. public class tiger {
  6. public void action() {
  7. System.out.println("我是胖虎,我现在很饿");
  8. }
  9. }

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

外观模式

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

发表评论

表情:
评论列表 (有 0 条评论,309人围观)

还没有评论,来说两句吧...

相关阅读