设计模式之外观模式
外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,使子系统更容易使用。
应用场景
- 因为子系统随着发展会变更的更复杂,客户端想更简单统一给子系统建立一个公共的调用方式。这样即使子系统的再增加可重用性而变得更加复杂,客户端也不必知道,因为客户端往往不需要针对某一个子系统进行特定的定制化。
- 实现了子系统与客户之间的松耦合关系,这使得子系统的组件变化不会影响到调用它的客户类,只需要调整外观类即可。
模式结构
外观模式中客户端依靠Facade类来调用多个子系统,来达到简化客户端调用的目的。
例子中,每次开机的时候都要启动mysql,apache服务,两个还好,要是有更多服务岂不是很恼人,每次都要敲一大堆命令来开启服务。这时候可以使用外观模式,将所有服务加入到外观类中,每次开机只用调用外观类中的接口就行了。来达到简化客户端使用的目的。
代码
第一部分:子系统接口
1 | public interface Services { |
第二部分:外观类
1 | public class Facade { |
第三部分:客户端调用
1 | public class App { |
结果:
1 | mysql is started |