外观模式:为子系统中的一组接口提供了一个一致的界面,此模式定义了一个高层的接口,这个接口使得一子系统更加容易使用。
它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。
体现了依赖倒转和迪米特法则
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#面向对象设计模式中的Facade外观模式,这是一种结构型模式,旨在通过提供一个统一的接口来简化复杂的子系统。文章通过具体的例子和代码展示了如何在实际开发中运用这一模式,并解释了它与其他几...
**外观模式(Facade Pattern)**是面向对象设计模式中的一种结构型模式,它提供了一个统一的接口,用于访问子系统中的各个部分。在C#编程中,外观模式可以帮助我们简化复杂的系统接口,使得客户端代码与复杂的内部...
外观模式是一种结构型设计模式,它的主要目标是提供一个统一的接口,用来简化对复杂系统的访问。在Java中,当你有一个复杂的子系统,而你希望客户端代码能够以一种更简洁、更易于理解的方式来与之交互时,就可以使用...
**外观模式(Facade Pattern)**是一种结构型设计模式,它主要解决的是复杂系统或子系统对外暴露一个简单统一的接口,使得客户端无需关心内部复杂的交互细节。这种模式在实际开发中广泛应用,尤其在大型项目中,它能...
**Ajax与Facade模式** 在Web开发中,Ajax(Asynchronous JavaScript and XML)技术允许我们创建交互性更强、响应更快的网页。它通过在后台与服务器进行少量数据交换,实现了页面的部分更新,而无需刷新整个页面。...
外观模式(Facade Pattern)是设计模式中的一种结构型模式,主要目的是为了解决复杂的系统接口问题,提供一个简单的统一入口,使得客户端可以更方便地使用系统。在Java中,外观模式通常用来隐藏系统的复杂性,对外只...
设计模式面面观(13):外观模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/17/2299641.aspx
外观模式(Facade Pattern)在软件工程中是一种设计模式,它为复杂的系统或子系统提供一个简单的接口,使得客户端可以更容易地使用这些系统或子系统。外观模式的核心思想是通过一个高层次的接口,隐藏子系统的复杂性...
**外观模式(Facade)**是软件工程中一种常用的设计模式,它为复杂的系统或子系统提供了一个统一的入口点,简化了客户端与复杂系统之间的交互。这种模式将客户端与子系统的内部实现细节隔离开来,使得客户端只需要...
在软件设计模式的世界里,`Command`(命令)和`Facade`(外观)模式是非常重要的两种设计模式。它们分别服务于不同的目的,但都是为了提高代码的可读性、可维护性和灵活性。 `Command`模式是一种行为设计模式,它将...
外观模式(Facade Pattern)是一种结构型设计模式,用于为复杂子系统提供一个简单的接口。它通过封装系统内部的复杂性,提供一个统一的接口,使得客户端能够更加方便地使用子系统的功能。这种模式通常用于简化代码、...
外观模式简化了这种交互过程,让客户端只需要与一个单一的接口打交道,而无需了解内部子系统的具体实现细节。 在`Facade`模式中,主要有四个角色: 1. **子系统(Subsystems)**:是复杂系统中的组件,各自负责一...
在软件工程中,当一个系统包含多个子系统或者组件,而这些子系统之间相互依赖、交互复杂时,使用外观模式可以降低系统的耦合度,提高代码的可读性和可维护性。 **模式的组成部分:** 1. **外观(Facade)角色**:...
首先,FACADE(外观)模式是一种接口型模式,它的主要作用是为复杂的子系统提供一个简单的接口,使得客户端无需了解子系统内部的复杂性。通过创建一个外观类,对外暴露统一的操作,隐藏子系统组件间的交互细节。这样...
外观模式(Facade)是设计模式中的一种结构型模式,它为复杂的系统或子系统提供了一个统一的入口点,简化了客户端与系统之间的交互。通过外观模式,我们可以将系统的内部复杂性隐藏起来,使得用户只需要与一个简单的...
**外观模式(Facade Pattern)**是一种结构型设计模式,它为复杂的系统或子系统提供一个简单的接口,使得客户端代码能够更容易地使用这些系统或子系统。在Java编程中,外观模式常常被用来简化多模块间的交互,降低...