外观模式(Pacade Pattern)

Posted yvhqbat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了外观模式(Pacade Pattern)相关的知识,希望对你有一定的参考价值。

1. 外观模式定义

外观模式:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

类图:

2. 实例


//测试
public class FacadePatternTest 
    public static void main(String[] args)
        Computer computer=new Computer();
        computer.start();
        computer.shutdown();
    


//CPU
class CPU
    public void start()
        System.out.println("cpu start up!");
    

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


//Memory
class Memory
    public void start()
        System.out.println("Memory start up!");
    

    public void shutdown()
        System.out.println("Memory shutdown!");
    


//Disk
class Disk
    public void start()
        System.out.println("Disk start up!");
    

    public void shutdown()
        System.out.println("Disk shutdown!");
    


//Computer,the facade class
class Computer
    private CPU cpu=null;
    private Memory memory=null;
    private Disk disk=null;

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

    public void start()
        System.out.println("start the computer!");
        cpu.start();
        memory.start();
        disk.start();
        System.out.println("start computer finished!");
    

    public void shutdown()
        System.out.println("begin to shutdown the computer");
        cpu.shutdown();
        memory.shutdown();
        disk.shutdown();
        System.out.println("computer shutdown finished!");
    

如果我们没有Computer类,那么,CPU、Memory、Disk他们之间将会相互持有实例,产生关系,这样会造成严重的依赖,修改一个类,可能会带来其他类的修改,这不是我们想要看到的.
有了Computer类,他们之间的关系被放在了Computer类里,这样就起到了解耦的作用,这,就是外观模式!

以上是关于外观模式(Pacade Pattern)的主要内容,如果未能解决你的问题,请参考以下文章

GoF设计模式:Facade Pattern 外观模式

设计模式-10外观模式(Facade Pattern)

外观模式(Facade Pattern)

设计模式之- 外观模式(Facade Pattern)

外观模式(Facade Pattern)

12外观模式(Facade Pattern)