`

读《研磨设计模式》-代码笔记-外观模式-Facade

阅读更多
声明:
本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/




/*
 * 百度百科的定义:
 * Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,
 * 隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
 * 
 * 可简单地将外观模式理解为
 * 将复杂子系统的各种接口(方法)统一成一个方法
 * (对客户来说只是一个业务操作,但这操作可能是由各子系统协调共同完成)提供给客户使用,达到方便和安全的效果
 * 
 * 比如客户端要做某个操作(传递了参数p):doSomething(Parameter p),那我们就直接定义一个doSomething(Parameter p)的Facade
 * 这样,客户可以按他的理解和要求直接调用;我们可以在Facade里的doSomething调用各个子系统来完成这个功能而不必暴露给客户端
 * 也避免客户端和子系统打交道,达到解耦的效果
 */
interface IModuleA {
	void testA();
	
	//这个方法可以在Facade里面决定是否暴露给客户
	void hiddenTestA();
}

interface IModuleB {
	void testB();
}

interface IModuleC {
	void testC();
}

interface IFacade {
	void testForClient();
}

class ModuleA implements IModuleA {
	public void testA() {
		System.out.println("test A");
	}
	
	public void hiddenTestA() {
		System.out.println("hiddenTest A");
	}
}

class ModuleB implements IModuleB {
	public void testB() {
		System.out.println("test B");
	}
}

class ModuleC implements IModuleC {
	public void testC() {
		System.out.println("test C");
	}
}

class Facade implements IFacade {

	boolean show = false;
	
	public void testForClient() {
		IModuleA a = new ModuleA();
		a.testA();
		if (show) {
			a.hiddenTestA();
		}
		IModuleB b = new ModuleB();
		b.testB();
		IModuleC c = new ModuleC();
		c.testC();
	}
	
}

public class FacadePattern {

	public static void main(String[] args) {
		IFacade facade = new Facade();
		facade.testForClient();
	}

}


1
5
分享到:
评论

相关推荐

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    - 外观模式(Facade):提供一个统一的接口,用来访问子系统的一组接口。 - 适配器模式(Adapter):使两个接口不兼容的类能够协同工作。 - 桥接模式(Bridge):将抽象部分与实现部分分离,使它们可以独立变化。...

    设计模式专题之(十一)外观模式---设计模式外观模式示例代码(python--c++)

    外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一组接口。外观模式使子系统更容易被使用,因为它为复杂的子系统提供了一个简单的接口,客户端可以通过这个接口与子...

    研磨设计模式PDF

    外观模式(Facade)为子系统提供一个统一的接口,使得子系统的复杂性对客户端透明。 3. 行为型模式(Behavioral Patterns):主要关注对象之间的职责分配和交互。如命令模式(Command)将请求封装为一个对象,从而...

    c++设计模式-结构型模式-外观模式

    c++设计模式-结构型模式-外观模式;qt工程;c++简单源码; 外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,...

    23个设计模式图解--学习笔记

    在《23个设计模式图解--学习笔记》中,我们探讨了这些模式,以便于理解和应用到实际开发中。以下是这23个设计模式的详细说明: 1. **工厂方法**(Factory Method):定义一个用于创建对象的接口,让子类决定实例化...

    设计模式-外观模式(讲解及其实现代码)

    **外观模式(Facade Pattern)**是一种结构型设计模式,它为复杂的系统或子系统提供一个简单的接口,使得客户端可以通过这个接口来访问系统,而无需了解系统内部的具体实现细节。外观模式降低了系统的复杂度,提高了...

    研磨设计模式博文集

    2. **结构型模式**:这些模式关注如何将类和对象组合成更大的结构,如适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)、组合模式(Composite)和...

    JAVA设计模式-chm版

    包括适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、外观模式(Facade)、组合模式(Composite)、享元模式(Flyweight)和代理模式(Proxy)。这些模式可以帮助我们更好地组织代码,实现...

    C#设计模式-吕震宇

    设计模式(15)-Facade Pattern 设计模式(14)-Flyweight Pattern C#设计模式(13)-Proxy Pattern C#设计模式(12)-Decorator Pattern C#设计模式(11)-Composite Pattern C#设计模式(10)-Adapter ...

    java设计模式----源代码

    5. **外观模式(Facade)**:为子系统提供一个统一的接口,使得子系统更加容易使用。`Facade`目录下的代码可能演示了如何简化复杂系统的接口,使其对外只有一个入口点。 6. **建造者模式(Builder)**:将复杂对象的...

    外观模式 - 代码(Java)

    **外观模式(Facade Pattern)**是一种结构型设计模式,它为复杂的系统或子系统提供一个统一的入口点,简化了客户端与其交互的方式。在Java中,外观模式的应用可以帮助我们更好地组织代码,降低系统的耦合度,并提高...

    设计模式--外观模式java例子

    **外观模式(Facade Pattern)**是软件设计模式中的一种结构型模式,它的主要目的是为了解耦复杂的系统,提供一个统一的接口,使得客户端可以更容易地使用这个系统。在Java编程中,外观模式的应用广泛,尤其是在处理...

    设计模式-java实现代码汇总

    10. 外观模式(Facade):为子系统提供一个一致的接口,简化了客户端与其交互。 11. 享元模式(Flyweight):有效地使用共享对象,减少内存中的对象数量。 12. 代理模式(Proxy):为其他对象提供一种代理以控制对这...

    设计模式 - 外观模式(C++实例)

    **外观模式(Facade)**是一种结构型设计模式,它的主要目的是为了解耦复杂的系统,提供一个简单的接口,使得客户端可以更方便地使用系统的子系统。在C++编程中,外观模式的应用尤为常见,因为它能够有效地降低系统...

    C#设计模式-外观模式

    **外观模式(Facade Pattern)**是软件工程中一种常用的设计模式,它为复杂的子系统提供了一个简单的接口,使得客户端代码可以更容易地与这些子系统交互。在C#中,外观模式同样被广泛应用,以降低系统的复杂性,提高...

    设计模式之外观模式案例代码

    **外观模式(Facade Pattern)**是一种结构型设计模式,它为复杂的系统或子系统提供一个简单的接口,使得客户端可以不关心内部的复杂性,只通过这个接口与子系统进行交互。这种模式降低了系统的复杂度,提高了代码的...

    设计模式之外观模式 facade

    外观模式(Facade Pattern)是设计模式中的一种结构型模式,主要目的是为了解决复杂的系统接口问题,提供一个简单的统一入口,使得客户端可以更方便地使用系统。在Java中,外观模式通常用来隐藏系统的复杂性,对外只...

    java常用设计模式-外观模式

    外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个简单的接口来访问复杂系统中的子系统,从而隐藏了子系统的复杂性。外观模式属于对象型模式,它通过创建一个外观类,将客户端与子系统解耦,使得客户端...

    设计模式之外观模式(Facade Pattern)

    **外观模式(Facade Pattern)**是一种结构型设计模式,它主要解决的是复杂系统或子系统对外暴露一个简单统一的接口,使得客户端无需关心内部复杂的交互细节。这种模式在实际开发中广泛应用,尤其在大型项目中,它能...

    C#经典设计模式及代码示例

    - 外观模式(Facade) - 享元模式(Flyweight) - 代理模式(Proxy) - 责任链模式(Chain of Responsibility) - 命令模式(Command) - 解释器模式(Interpreter) - 迭代器模式(Iterator) - 中介者模式...

Global site tag (gtag.js) - Google Analytics