设计模式-外观模式(Facade)
来源:互联网 发布:守望先锋帧数优化补丁 编辑:程序博客网 时间:2024/06/05 19:20
1.概述
外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
1.1使用场景
1.在设计初期阶段,我们应该要有意识的把不同的两个层分离,例如:三层架构,数据访问层、业务逻辑层、表现层;如果我们不在层与层之间建立外观(Facede),那么层与层之间相互调用就会比较繁琐,耦合性也很高。因此建立外观就显得很有必要。
2.在开阶段、子系统往往会因为不断的重构演化而变得越来越复杂,增加外观可以提供一个简单的接口,减少他们之间的依赖。
3.在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了。可以这个遗留系统包含了一些个核心技术,新的系统需要依赖于老的系统,这个时候我们用外观模式也是很适合的,我们可以为新系统开发一个外观类(Facade),来提供设计粗糙或者高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade交互,Facade与遗留代码交互所有复杂的工作。
2.UML
3.代码
SubSystemOne.java
public class SubSystemOne { public void methodOne(){ System.out.println("子系统方法一"); }}
SubSystemTwo.java
public class SubSystemTwo { public void methodTwo(){ System.out.println("子系统方法二"); }}
SubSystemThree.java
public class SubSystemThree { public void methodThree(){ System.out.println("子系统方法三"); }}
Facade.java(外观类)
public class Facade { private SubSystemOne one; private SubSystemTwo two; private SubSystemThree three; public Facade(){ this.one = new SubSystemOne(); this.two = new SubSystemTwo(); this.three = new SubSystemThree(); } public void methodA(){ one.methodOne(); two.methodTwo(); } public void methodB(){ three.methodThree(); one.methodOne(); }}
Client.java(客户端)
public class Client { public static void main(String args[]){ Facade facade = new Facade(); facade.methodA(); facade.methodB(); }}
0 0
- 外观(Facade)设计模式
- 设计模式 - 外观(Facade)
- Facade(外观)设计模式
- 设计模式之外观(Facade)模式
- 设计模式之外观模式(Facade)
- 设计模式-外观模式(Facade Pattern)
- 设计模式 (七)外观模式(Facade)
- 设计模式 (七)外观模式(Facade)
- 设计模式 (七)外观模式(Facade)
- 【设计模式】之外观模式(Facade)
- java设计模式-外观模式(Facade)
- 设计模式之外观模式(Facade)
- 设计模式之外观模式(Facade)
- 设计模式(二)-- 外观模式(Facade)
- 设计模式之外观(Facade)模式
- 设计模式之外观模式(Facade)
- 设计模式6--外观模式(Facade)
- 设计模式(20):外观模式Facade
- android编译做cmcc分支宏
- Android主线程中延时处理
- 【BZOJ2064】分裂
- 函数的参数传递方式
- JAVA技术体系
- 设计模式-外观模式(Facade)
- GridView绑定DataKeyName以及如何取这些值
- 如何无keystore获取apk的签名信息
- java函数回调实现原理
- Android init.rc文件浅析
- Boost linux安装
- sql server 分库分表方案&单表分区
- OpenGL ES之glTexImage2D函数
- 变量与常量