外观模式-Facade

外观模式是为了解决类与类之间依赖关系的,外观模式将类间关系放在一个Facade类中,降低了类类之间的耦合度,该模式中不涉及接口

构造外观模式

举一个经典的例子:

  • CPU
public class CPU {  
    public void startup(){  
        System.out.println("cpu startup");  
    }  
      
    public void shutdown(){  
        System.out.println("cpu shutdown");  
    }  
}
  • Mainboard
public class Mainboard {  
      
    public void startup(){  
        System.out.println("mainboard startup");  
    }  
      
    public void shutdown(){  
        System.out.println("mainboard shutdown");  
    }  
}
  • Disk
public class Disk {  
      
    public void startup(){  
        System.out.println("disk startup");  
    }  
      
    public void shutdown(){  
        System.out.println("disk shutdown");  
    }  
}
  • Computer类(外观类)
public class Computer {  
    private CPU cpu;  
    private Mainboard mainboard;  
    private Disk disk;  
      
    public Computer(){  
        cpu = new CPU();  
        mainboard = new Mainboard();  
        disk = new Disk();  
    }  
      
    public void startup(){  
        System.out.println("starting the computer");  
        cpu.startup();  
        mainboard.startup();  
        disk.startup();  
        System.out.println("computer is started");  
    }  
      
    public void shutdown(){  
        System.out.println("closing the computer");  
        disk.shutdown();  
        mainboard.shutdown();  
        cpu.shutdown();  
        System.out.println("computer is closed");  
    }  
}

测试

public class Main {  

    public static void main(String[] args) {  
        Computer computer = new Computer();  
        computer.startup();  
        computer.shutdown();  
    }  
}

测试结果:

starting the computer
cpu startup
mainboard startup
disk startup
computer is started
closing the computer
disk shutdown
mainboard shutdown
cpu shutdown
computer is closed

分析

如果我们没有外观类(Computer),CPU、Mainboard、Disk之间将会相互持有实例对象,造成严重的依赖;而有了Computer,他们之间的关系被放在了Computer类里,这样就起到了解耦的作用。这就是外观模式!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 场景问题# 1.1 生活中的示例## 外观模式在现实生活中的示例很多,比如:组装电脑,通常会有两种方案。 一个...
    七寸知架构阅读 11,465评论 7 57
  • 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者...
    RamboLI阅读 4,147评论 0 1
  • 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者...
    lichengjin阅读 4,436评论 0 8
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,641评论 18 399
  • 逸小苼阅读 1,639评论 0 1

友情链接更多精彩内容