外观模式:为子系统中的一组接口提供一个一致的界面,次模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
UML图:
外观类:
package com.cnblog.clarck; /** * 外观类 知道哪些子系统负责处理请求,将客户的请求代理给适当的子系统对象 * * @author clarck * */ public class Facede { private SubSystemOne one; private SubSystemTwo two; private SubSystemThree three; private SubSystemFour four; public Facede() { one = new SubSystemOne(); two = new SubSystemTwo(); three = new SubSystemThree(); four = new SubSystemFour(); } public void methodA() { System.out.println("方法组A ---------"); one.methodOne(); two.methodTwo(); four.methodFour(); } public void methodB() { System.out.println("方法组A ---------"); two.methodTwo(); three.methodThree(); } }
package com.cnblog.clarck; /** * 子系统一 * * @author clarck * */ public class SubSystemOne { public void methodOne() { System.out.println("子系统方法一"); } }
package com.cnblog.clarck; /** * 子系统二 * * @author clarck * */ public class SubSystemTwo { public void methodTwo() { System.out.println("子系统方法二"); } }
package com.cnblog.clarck; public class SubSystemThree { public void methodThree() { System.out.println("子系统方法三"); } }
package com.cnblog.clarck; /** * 子系统方法四 * * @author clarck * */ public class SubSystemFour { public void methodFour() { System.out.println("子系统方法四"); } }
package com.cnblog.clarck; /** * 测试类 * * @author clarck * */ public class Client { public static void main(String[] args) { Facede facede = new Facede(); facede.methodA(); facede.methodB(); } }