目录
介绍
代码演示
屏幕
主机
键盘
电脑组装
编辑 外观模式的注意事项和细节外观模式的注意事项和细节
介绍
1)外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供
一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
2) 外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端
只需跟这个接口发生调用,而无需关心这个子系统的内部细节
3) 解决思路:定义一个高层接口,给子系统中的一组接口提供一个一致的界面(比
如在高层接口提供四个方法ready, play, pause, end ),用来访问子系统中的一群接口
4) 也就是说就是通过定义一个一致的接口(界面类),用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节→>外观模式
代码演示
这里以一个电脑重要部件工作流程为简单示例
屏幕
public class Screen {//单例 饿汉模式private static Screen instance = new Screen();public static Screen getInstance(){return instance;}public void open(){System.out.println("屏幕打开");}public void close(){System.out.println("屏幕关闭");}public void show(){System.out.println("屏幕显示画面");}
}
主机
public class Host {//单例 饿汉模式private static Host instance = new Host();public static Host getInstance(){return instance;}public void open(){System.out.println("主机打开");}public void close(){System.out.println("主机关闭");}public void play(){System.out.println("主机开始工作");}
}
键盘
public class Keyboard {//单例 饿汉模式private static Keyboard instance = new Keyboard();public static Keyboard getInstance(){return instance;}public void open(){System.out.println("无线键盘打开");}public void close(){System.out.println("无线键盘关闭");}public void play(){System.out.println("键盘开始工作,正在监听按键事件");}
}
电脑组装
public class Computer {//聚合部件private Screen screen;private Host host;private Keyboard keyboard;public Computer() {super();this.screen = Screen.getInstance();this.host = Host.getInstance();this.keyboard = Keyboard.getInstance();}//操作分三步//打开各个机器组件public void open(){screen.open();host.open();keyboard.open();}//各个部件开始工作public void work(){host.play();keyboard.play();screen.show();}//关闭各个部件public void close(){host.close();keyboard.close();screen.close();}
}
测试
外观模式的注意事项和细节外观模式的注意事项和细节
1) 外观模式对外屏蔽了子系统的细节,因此外观模式降低了客户端对子系统使用的复
杂性
2) 外观模式对客户端与子系统的耦合关系,让子系统内部的模块更易维护和扩展
3) 通过合理的使用外观模式,可以帮我们更好的划分访问的层次
4) 当系统需要进行分层设计时,可以考虑使用Facade模式
5) 在维护一个遗留的大型系统时,可能这个系统已经变得非常难以维护和扩展,此时
可以考虑为新系统开发一个Facade类,来提供遗留系统的比较清晰简单的接口,让新系统与Facade类交互,提高复用性
6) 不能过多的或者不合理的使用外观模式,使用外观模式好,还是直接调用模块好。
要以让系统有层次,利于维护为目的。