1.定义

外观模式为一组子系统的接口提供了一个一致的界面,定义了一个高层的接口,使得子系统更加易用;可以理解为定义了一个类,调用子系统或者很多类的功能来完成特定的功能,外观模式不涉及接口;

2.角色

1>外观角色

客户端可以调用外观角色的方法,这个角色知道子系统的所有的功能,再正常情况下,外观角色将客户端的请求转发到对应子系统去行使对应的功能;

2>子系统角色

可以有一个或者多个子系统,每个子系统可以直接被客户端调用,也可以被外观角色调用;子系统并不知道外观角色的存在,对它而言,外观角色只是一个客户端而已;

架构图如下

设计模式-外观模式

3.Demo

1>外观角色

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 computer!");
        cpu.shutdown();
        memory.shutdown();
        disk.shutdown();
        System.out.println("computer closed!");
    }
}

2>子系统

public class CPU {

    public void startup() {
        System.out.println("cpu startup!");
    }

    public void shutdown(){
        System.out.println("cpu shutdown!");
    }
}

public class Disk {
    public void startup() {
        System.out.println("disk startup!");
    }

    public void shutdown() {
        System.out.println("disk shutdown!");
    }
}

public class Memory {
    public void startup() {
        System.out.println("memory startup!");
    }

    public void shutdown() {
        System.out.println("memory shutdown!");
    }
}

 

相关文章: