首页 > 代码库 > 设计模式8:外观模式
设计模式8:外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式向现有的系统添加一个接口,来隐藏系统的复杂性。
这种模式为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
使用:
1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。
2、定义系统的入口。
这样做带来了外观类与系统的耦合,降低了客户端与系统的耦合。
uml图:
Facade类通过三个method方法对原有系统(SubSystem1、2、3)的方法进行包装,方便客户端调用。
代码:
SuperSystem及其子类:
public abstract class SuperSystem { public abstract void method(); } public class SubSystem1 extends SuperSystem { @Override public void method() { System.out.println("sub system 1"); } } public class SubSystem2 extends SuperSystem { @Override public void method() { System.out.println("sub system 2"); } } public class SubSystem3 extends SuperSystem { @Override public void method() { System.out.println("sub system 3"); } }
Facade类:
public class Facade { private SuperSystem sub1 = null; private SuperSystem sub2 = null; private SuperSystem sub3 = null; public Facade() { sub1 = new SubSystem1(); sub2 = new SubSystem2(); sub3 = new SubSystem3(); } public void methodA() { sub1.method(); sub2.method(); } public void methodB() { sub2.method(); sub3.method(); } public void methodC() { sub1.method(); sub3.method(); } }
Demo类:
public class FacadeDemo { public static void main(String[] args) { Facade facade = new Facade(); facade.methodA(); facade.methodB(); facade.methodC(); } }
设计模式8:外观模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。