收藏
外观模式定义如下:
外观模式:为子系统中的一组接口提供一个统一的入口。
外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
外观模式又称为门面模式,它是一种对象结构型模式。
外观模式是迪米特法则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类与子系统的耦合度。
外观模式包含如下两个角色:
(1) Facade(外观角色):
在客户端可以调用它的方法,在外观角色中可以知道相关的(一个或者多个)子系统的功能和责任;
在正常情况下,它将所有从客户端发来的请求委派到相应的子系统去,传递给相应的子系统对象处理。
(2) SubSystem(子系统角色):
在软件系统中可以有一个或者多个子系统角色,每一个子系统可以不是一个单独的类,而是一个类的集合,它实现子系统的功能;
每一个子系统都可以被客户端直接调用,或者被外观角色调用,它处理由外观类传过来的请求;
子系统并不知道外观的存在,对于子系统而言,外观角色仅仅是另外一个客户端而已。
代码示例
https://www.cnblogs.com/lthIU/p/5860607.html
各个子系统角色
public class CPU { public void start(){ System.out.println("cpu is start"); } public void shutDown(){ System.out.println("cpu is shutdown"); } } public class Disk { public void start(){ System.out.println("disk is start"); } public void shutDown(){ System.out.println("disk is shutdown"); } } public class Memory { public void start(){ System.out.println("memory is start"); } public void shutDown(){ System.out.println("memory is shutDown"); } }
门面角色
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 start(){ System.out.println("computer start begin"); cpu.start(); disk.start(); memory.start(); System.out.println("computer start end"); } public void shutDown(){ System.out.println("computer shutdown begin"); cpu.shutDown(); disk.shutDown(); memory.shutDown(); System.out.println(" computer shutdown end"); } }
客户端角色
public class Client { public static void main(String[] args) { Computer computer=new Computer(); computer.start(); System.out.println("=========="); computer.shutDown(); } }