外观模式:为子系统中的一组接口提供了一个一致的界面,此模式定义了一个高层的接口,这个接口使得一子系统更加容易使用。
它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。
体现了依赖倒转和迪米特法则
class SubSystemOne {
public void methodOne(){
System.out.println("子系统方法 - 1");
}
}
class SubSystemTwo {
public void methodTwo(){
System.out.println("子系统方法 - 2");
}
}
class SubSystemThree {
public void methodThree(){
System.out.println("子系统方法 - 3");
}
}
//外观类,它需要了解所有子系统的方法或者属性,进行组合,以备外界调用。
public class Facade {
SubSystemOne subSystemOne;
SubSystemTwo subSystemTwo;
SubSystemThree subSystemThree;
public Facade(){
subSystemOne = new SubSystemOne();
subSystemTwo = new SubSystemTwo();
subSystemThree = new SubSystemThree();
}
public void operateOne(){
subSystemOne.methodOne();
subSystemTwo.methodTwo();
subSystemThree.methodThree();
}
public void operateTwo(){
subSystemOne.methodOne();
subSystemThree.methodThree();
}
}
public static void main(String[] args) {
//Facade 的调用,客户端可以根本不知三个子系统类的存在。
Facade facade = new Facade();
facade.operateOne();
System.out.println("===============");
facade.operateTwo();
}
打印结果:
子系统方法 - 1
子系统方法 - 2
子系统方法 - 3
===============
子系统方法 - 1
子系统方法 - 3
外观模式使用:
设计初期,应该有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑 数据访问层、业务逻辑层、表示层 的层与层之间建立外观(Facade),这样可以为复杂的子系统提供一个简单的接口,使得耦合性大大降低。
其次,在开发的阶段,子系统不断往往因为不断地重构变得复杂,大多模式使用时会产生很多很小的类,这本是好事,但也会给外部调用它们的程序带来使用上的困难,增加外观Facade 可以提供一个简单地接口,减少它们的依赖。
第三,在维护一个遗留的大型系统,可能这个系统已经非常难以维护和扩展,但因为它包含非常重要的功能,新的需求开发必须要依赖它。此时用Facade也是非常适合的。为新的系统开发一个外观 Facade 类,来提供设计粗糙或高度复杂的遗留代码比较清晰简单地接口,让新系统与Facade对象交互,让Facade与遗留代码交互所有复杂的工作。
- 大小: 23.7 KB
分享到:
相关推荐
C#面向对象设计模式纵横谈\C#面向对象设计模式纵横谈\10.Facade 外观模式(结构型模式).wmv )
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第11节:结构型模式Facade外观模式
C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式)
C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) (Level 300)
java 设计模式 Facade外观模式 Simple Factory 简单工厂模式,代码有点罗嗦,不过可移植性很强
Ajax中使用Facade外观(门面)模式的Eclipse版本的Demo.
设计模式中的facade外观模式在JavaScript开发中的运用_.docx
设计模式之外观模式 facade 采用JAVA实现,请结合文档看,欢迎讨论。。
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
设计模式面面观(13):外观模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/17/2299641.aspx
外观模式 Facade 设计模式 还请各位大S指教。
主要介绍了C#设计模式之Facade外观模式解决天河城购物问题,简单描述了外观模式的定义并结合具体实例分析了外观模式解决购物问题的相关步骤与操作技巧,需要的朋友可以参考下
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
外观模式是一种对象结构型模式,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更加容易使用。以下是外观模式的一些关键点: 简化接口:外观模式通过提供一个统一的接口来简化外部与子系统的通信,这样...
主要介绍了C++设计模式编程中Facade外观模式的使用实例解析,外观模式的主要用途就是为子系统的复杂处理过程提供方便的调用方法,需要的朋友可以参考下
模式定义:外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观...
外观模式通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合,接下来就来看设计模式中的facade外观模式在JavaScript开发中的运用
本文实例讲述了PHP设计模式:外观模式Facade。分享给大家供大家参考,具体如下: 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度...
主要介绍了Java设计模式之外观模式(Facade模式)介绍,外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面,需要的朋友可以参考下