本文共 1759 字,大约阅读时间需要 5 分钟。
外观模式,也叫门面模式(Facade Pattern)也是接口型模式的一种。
要求一个子系统的外部与其内部通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使的子系统更易于使用,从而降低了子系统的复杂性和依赖(当需要的时候,客户端也可以视外观不存在,直接访问子系统底层的接口)。
设计外观时,不需要增加额外的功能。
不要从外观方法中返回子系统中的组件给客户。 应用外观模式的目的是提供一个高层次的接口。因此,外观方法最适合提供特定的高层次的业务服务,而不是进行底层次的单独的业务执行。
不符合开闭原则,即对修改关闭,对扩展开放,当业务逻辑比较复杂时,要修改外观的功能就必须去修改外观角色的代码。
维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,此时可以为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。
外观类客户端
public class FacadeClient { public static void main(String[] args) { // 由于Facade的作用,客户端可以根本不知道四个子系统的存在 Facade facade = new Facade(); facade.methodA(); facade.methodB(); }}
外观类,它需要了解所有的子系统的方法或属性,进行组合,以备外界调用。
public class Facade { SubSystemOne subSystemOne; SubSystemTwo subSystemTwo; SubSystemThree subSystemThree; SubSystemFour subSystemFour; public Facade() { subSystemOne = new SubSystemOne(); subSystemTwo = new SubSystemTwo(); subSystemThree = new SubSystemThree(); subSystemFour = new SubSystemFour(); } public void methodA() { System.out.println("方法组A:"); subSystemOne.methodOne(); subSystemTwo.methodTwo(); subSystemFour.methodFour(); } public void methodB() { System.out.println("方法组B:"); subSystemThree.methodThree(); subSystemFour.methodFour(); }}
子系统类
class SubSystemOne { public void methodOne() { System.out.println("子系统方法一"); }}class SubSystemTwo { public void methodTwo() { System.out.println("子系统方法二"); }}class SubSystemThree { public void methodThree() { System.out.println("子系统方法三"); }}class SubSystemFour { public void methodFour() { System.out.println("子系统方法四"); }}
上一篇:
下一篇:转载地址:http://ilrai.baihongyu.com/