设计模式之外观模式(Facade)
2013-08-02 14:56
316 查看
外观模式又称门面模式, 所谓外观,就是为子系统对外提供的一组接口提供一个统一的界面,使其他系统对该系统的访问都是通过这个统一界面来完成的。
我们来看一个小例子:
某系统有三个类A类、B类、C类,分别完成某项功能:
客户端需要分别调用A、B、C三类中的doSomething来完成特定功能,通常我们会这样来调用:
这样做虽然能达到要求,但每次必须的和A、B、C类打交道才能完成规定实现,这很麻烦,这时我们只需要引入facade类:
这样我们每次只用Facede类就能完成规定实现:
使用facade模式避免了外部系统和子系统之间的直接联系,从而降低了系统之间的依赖和复杂度,但这样做会限制外部系统对仔细通过调用的灵活性,只能按照外传类提供的方式对子系统进行调用。
上述示例UML图如下:
我们来看一个小例子:
某系统有三个类A类、B类、C类,分别完成某项功能:
package com.dxy.design.pattern.builder.facade; public class A { public static void doSomething() { System.out.println("A完成某事"); } }
package com.dxy.design.pattern.builder.facade; public class B { public static void doSomething() { System.out.println("B完成某事"); } }
package com.dxy.design.pattern.builder.facade; public class C { public static void doSomething() { System.out.println("C完成某事"); } }
客户端需要分别调用A、B、C三类中的doSomething来完成特定功能,通常我们会这样来调用:
package com.dxy.design.pattern.builder.facade; public class Client { public static void main(String[] args) { A.doSomething(); B.doSomething(); C.doSomething(); } }
这样做虽然能达到要求,但每次必须的和A、B、C类打交道才能完成规定实现,这很麻烦,这时我们只需要引入facade类:
package com.dxy.design.pattern.builder.facade; public class Facade { public void aDoSomeThing() { A.doSomething(); } public void bDoSomeThing() { B.doSomething(); } public void cDoSomeThing() { C.doSomething(); } }
这样我们每次只用Facede类就能完成规定实现:
package com.dxy.design.pattern.builder.facade; public class Client { public static void main(String[] args) { Facade facade = new Facade(); facade.aDoSomeThing(); facade.bDoSomeThing(); facade.cDoSomeThing(); } }
使用facade模式避免了外部系统和子系统之间的直接联系,从而降低了系统之间的依赖和复杂度,但这样做会限制外部系统对仔细通过调用的灵活性,只能按照外传类提供的方式对子系统进行调用。
上述示例UML图如下:
相关文章推荐
- 设计模式(Design Patterns)-可复用面向对象软件的基础 08:外观模式(Facade)
- Java设计模式十七:外观模式(Facade)
- 设计模式 (七)外观模式(Facade)
- 我读设计模式之外观模式(Facade Pattern)
- 设计模式之外观模式(Facade)
- (转载)设计模式学习笔记(十一)——Facade外观模式
- 设计模式笔记10:外观模式(Facade Pattern)
- 【初学设计模式】Facade (外观)
- 设计模式理解(九)结构型——外观(Facade)
- 设计模式之外观模式(Facade)摘录
- Java设计模式——外观模式(门面模式)(Facade)
- Android设计模式源码解析之外观模式(Facade)
- 【设计模式】学习笔记10:外观模式(Facade)
- 设计模式之Facade(外观 总管 Manager)
- [设计模式-结构型]外观模式(Facade)
- 23种设计模式-9.外观模式(Facade Pattern)
- Java设计模式-----Facade外观模式
- 设计模式拾荒之外观模式( Facade Pattern ): 最简单的设计模式
- 【翻译】设计模式之外观(Facade)模式——C++实例
- 设计模式 --外观模式(Facade)