软件设计模式——门面模式(Facade)

Posted 指尖飞码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件设计模式——门面模式(Facade)相关的知识,希望对你有一定的参考价值。

定义: 面模式(facade)又称为外观模式,它是为了解决类与类之间的依赖关系的,像 spring 一样,可以将类和类之间的关系配 置到配置文件中,而外观模式就是将他们的关系放在一个 Facade 类中,降低了类类之间的 耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例)

门面模式的组成:
1)门面角色( facade ):这是门面模式的核心。它被客户角色调用,因此它熟悉子系统的功能。它内部根据客户角色已有的需求预定了几种功能组合。

2)子系统角色:实现了子系统的功能。对它而言, façade 角色就和客户角色一样是未知的,它没有任何 façade 角色的信息和链接。

3)客户角色:调用 façade 角色来完成要得到的功能。

//子系统角色——CPU
public class CPU 
    public void startup()
        System.out.println("cpu startup!");
    
    public void shutdown()
        System.out.println("cpu shutdown!");
    
//子系统角色——Disk 
public class Disk 
    public void startup()
        System.out.println("disk startup!");
    
    public void shutdown()
        System.out.println("disk shutdown!");
    


//子系统角色——Memory
public class Memory 
    public void startup()
        System.out.println("memory startup!");
    
    public void shutdown()
        System.out.println("memory shutdown!");
    
//门面角色————Computer
public class Computer 
    private CPU cpu;
    private Memory memory;
    private Disk disk;

    public Computer()
        cpu = new CPU();
        memory = new Memory();
        disk = new Disk();
    

    public void startup()
        System.out.println("start the computer!");
        cpu.startup();
        memory.startup();
        disk.startup();
        System.out.println("start computer finished!");
    
    public void shutdown()
        System.out.println("begin to close the compter!");
        cpu.shutdown();
        memory.shutdown();
        disk.shutdown();
        System.out.println("computer closed!");
    
//客户角色
public class User 
    public static void main(String[] args)
        Computer computer = new Computer();
        computer.startup();
        computer.shutdown();
    


输出为 :
start the computer!
cpu startup!
memory startup!
disk startup!
start computer finished!
begin to close the compter!
cpu shutdown!
memory shutdown!
disk shutdown!
computer closed!

以上是关于软件设计模式——门面模式(Facade)的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之门面模式(外观模式)

设计模式之门面模式(外观模式)

门面模式 facade

Tomcat源代码-门面模式(Facade)

10-门面(Facade)模式Ruby实现

浅析门面(Facade)模式+容器