Java设计模式-外观模式
2017-07-01 11:51
288 查看
1、概念
外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一样,可以将类与类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类与类之间的耦合度,该模式中没有涉及到接口。我们先看两张结构图,可以一目了然的了解外观模式的作用。
未使用外观模式:
使用了外观模式:
我们来看一下外观模式(门面模式)的两个角色
(1)门面(Facade)角色:客户端可以调用这个角色的方法,此角色知晓相关的(一个或者多个)子系统的功能和责任,在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。
(2)子系统(SubSystem)角色:可以同时有一个或者多个子系统。每个子系统都不是一个单独的类,而是一个类的集合(如上面的子系统就是由ModuleA、ModuleB、ModuleC三个类组合而成)。每个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面仅仅是另外一个客户端而已。
2、代码实现
/** * 示例:外观模式,也称门面模式 * * 优点:为了解决类与类之间的依赖关系,降低了类与类之间的耦合度 * * 该模式中没有涉及到接口 */ class Memory { public void startup() { System.out.println("this is memory startup..."); } public void shutdown() { System.out.println("this is memory shutdown..."); } } class CPU { public void startup() { System.out.println("this is CPU startup..."); } public void shutdown() { System.out.println("this is CPU shutdown..."); } }
/** * 作为Facade,持有Memory、CPU的实例 * * 任务让Computer帮咱们处理,我们无需直接和Memory、CPU打交道 * * 这里有点像去商店里买东西:咱们买东西只需要到商店去买,而无需去生产厂家那里买。 * * 商店就可以称为是一个Facade外观(门面)模式。 */ class Computer { private Memory memory; private CPU cpu; public Computer() { memory = new Memory(); cpu = new CPU(); } public void startup() { System.out.println("begin to start the computer..."); memory.startup(); cpu.startup(); System.out.println("computer start finished..."); } public void shutdown() { System.out.println("begin to close the computer..."); memory.shutdown(); cpu.shutdown(); System.out.println("computer close finished..."); } }
/** * 客户端测试类 */ public class Test { public static void main(String[] args) { Computer computer = new Computer(); computer.startup(); System.out.println("\n"); computer.shutdown(); } }
相关文章推荐
- Java设计模式(5) -- 外观
- java软件体系结构设计模式----外观
- JAVA设计模式(22) —外观(Facade)模式
- 【Java设计模式】之外观模式
- JAVA设计模式十八:--Facade(外观模式或门面模式)
- Java设计模式之外观模式
- java设计模式-外观模式(Facade)
- Java设计模式 结构模式-外观模式(Facade)
- JAVA设计模式之外观模式
- Java设计模式---外观模式
- Java设计模式(五)Facade(外观),Composite(组合),Decorator(油漆工)
- java 设计模式学习笔记七 facade外观模式
- JAVA设计模式十九--Facade(外观模式)
- Java设计模式之适配器模式和外观模式
- Java设计模式之外观模式研究
- Java设计模式之外观模式
- java设计模式之外观模式Facade
- JAVA设计模式——外观模式
- Java设计模式---外观模式
- Java设计模式十七:外观模式(Facade)