设计模式--外观模式
外观模式
定义:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
核心:
- 外观(Facade)角色:为多个子系统对外提供一个共同的接口。
- 子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它。
- 客户(Client)角色:通过一个外观角色访问各个子系统的功能。
图示:
package facade; public class FacadePattern { public static void main(String[] args) { Facade f=new Facade(); f.method(); } } //外观角色 class Facade { private SubSystem01 obj1=new SubSystem01(); private SubSystem02 obj2=new SubSystem02(); private SubSystem03 obj3=new SubSystem03(); public void method() { obj1.method1(); obj2.method2(); obj3.method3(); } } //子系统角色 class SubSystem01 { public void method1() { System.out.println("子系统01的method1()被调用!"); } } //子系统角色 class SubSystem02 { public void method2() { System.out.println("子系统02的method2()被调用!"); } } //子系统角色 class SubSystem03 { public void method3() { System.out.println("子系统03的method3()被调用!"); } }
输出:

实用场景:使用频率很高,各种技术和框架都有使用。如JDBC封装后的,commons提供的DBUtils类,Hibernate提供的工具类,SpringJDBC工具类
优点:
1)减少了系统的相互依赖
2)提高了灵活性。不管系统内部如何变化,只要不影响到外观对象,任你自由活动
3)提高了安全性。想让你访问子系统的哪些业务就开通哪些逻辑,不在外观上开通的方法,你就访问不到
缺点:
不符合开不原则,修改很麻烦

浙公网安备 33010602011771号