`
awfrun
  • 浏览: 82084 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

8.外观模式(Facade)

F# 
阅读更多

1.外观模式又叫做门面模式,主要是为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

 

2.【GOF】的书中指出:在门面模式中,通常只需要一个门面类,并且此门面类只有一个实例,换言之它是一个单例类。当然这并不意味着在整个系统里只能有一个门面类,而仅仅是说对每一个子系统只有一个门面类。或者说,如果一个系统有好几个子系统的话,每一个子系统有一个门面类,整个系统可以有数个门面类。

 

3.示意图:



 

 



 

 


4.例子:

 

package com.facade;

public class RoomLight {
	
	public void start(){
		System.out.println("房间的灯开了");
	}
	
	public void close(){
		System.out.println("房间的灯关了");
	}

}



package com.facade;

public class KitchenLight {
	
	public void start(){
		System.out.println("厨房的灯开了");
	}
	
	public void close(){
		System.out.println("厨房的灯关了");
	}

}



package com.facade;

public interface Facade {
	
	void startRootLight();
	void closeRootLight();
	
	void startKitchenLight();
	void closeKitchenLight();

}



package com.facade;

public class LightFacade implements Facade{
	
	private static LightFacade f = new LightFacade();
	private  RoomLight rootLight;
	private  KitchenLight kitchenLight;
	
	
	
	
	private LightFacade(){
		rootLight = new RoomLight();
		kitchenLight = new KitchenLight();
	}
	
	public static LightFacade getLightFacade(){
		return f;
	}
	
	
	

	public void closeKitchenLight() {
		kitchenLight.close();
		
	}

	public void closeRootLight() {
		rootLight.close();
		
	}

	public void startKitchenLight() {
		kitchenLight.start();
		
	}

	public void startRootLight() {
		rootLight.start();
		
	}

}




package com.facade;

public class Client {
	
	public static void main(String[] args){
		//控制它们时还要各个new一下
		/*
		KitchenLight k = new KitchenLight();
		RoomLight r = new RoomLight();
		
		k.start();
		r.start();
		k.close();
		r.close();
		
		*/
		
		
		//做一个控制面板
		
		LightFacade f = LightFacade.getLightFacade();
		f.startKitchenLight();
		f.startRootLight();
		f.closeKitchenLight();
		f.closeRootLight();
		
	}
	


}

 
 

  • 大小: 3.1 KB
  • 大小: 10.6 KB
分享到:
评论

相关推荐

    设计模式之外观模式 facade

    facade.performOperation(); } } ``` 在这个例子中,`SubSystem1`和`SubSystem2`是子系统类,它们分别实现了各自的功能。`Facade`作为外观类,实例化了这两个子系统,并提供了`performOperation`方法,该方法调用...

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

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

    Ajax中使用Facade外观模式的Eclipse版本的Demo

    **Ajax与Facade模式** 在Web开发中,Ajax(Asynchronous JavaScript and XML)技术允许我们创建交互性更强、响应更快的网页。它通过在后台与服务器进行少量数据交换,实现了页面的部分更新,而无需刷新整个页面。...

    外观模式 Facade Pattern

    ### 外观模式 (Facade Pattern) #### 概述 外观模式是一种重要的设计模式,属于结构型模式之一。其核心在于通过引入一个简单的接口来隐藏一个系统中存在的复杂性,从而简化了客户端对该系统的使用。该模式的主要...

    外观模式(Facade Pattern)-结构型模式

    设计模式面面观(13):外观模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/17/2299641.aspx

    C#面向对象设计模式纵横谈\11 结构型模式Facade外观模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第11节:结构型模式Facade外观模式

    外观模式facade

    facade.operation(); } } ``` 在这个例子中,`Facade`是外观类,`SubSystem1`和`SubSystem2`是子系统,客户端通过调用`Facade`的`operation`方法,实现了对两个子系统功能的集成。 总结来说,外观模式是一种简化...

    c++-设计模式之外观模式(Facade Pattern)

    外观模式(Facade Pattern)是一种结构型设计模式,用于为复杂子系统提供一个简单的接口。它通过封装系统内部的复杂性,提供一个统一的接口,使得客户端能够更加方便地使用子系统的功能。这种模式通常用于简化代码、...

    C#设计模式_设计模式_C#_

    外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型: 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者...

    通过python实现外观模式(Facade Pattern).rar

    外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个统一的接口,使得子系统更容易使用。外观模式定义了一个高层接口,使得这一子系统更加容易使用。 压缩包文件代码是一个简单的 ...

    Facade 外观模式(结构型模式)

    C#面向对象设计模式纵横谈\C#面向对象设计模式纵横谈\10.Facade 外观模式(结构型模式).wmv )

    PHP设计模式(九)外观模式Facade实例详解【结构型】

    8. 外观模式的缺点包括可能限制客户端使用子系统类的灵活性,并且在不引入抽象外观类的情况下,添加新的子系统可能需要修改外观类或客户端代码。 9. 通过一个电源总开关控制电器设备的示例,清晰地展示了外观模式的...

    facade-demo(外观模式示例)

    **外观模式(Facade Pattern)**是一种结构型设计模式,它为复杂的系统或子系统提供一个简单的接口,使得客户端代码能够更容易地使用这些系统或子系统。在Java编程中,外观模式常常被用来简化多模块间的交互,降低...

    设计模式代码——c#

    10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) ...

    java 设计模式 Facade外观模式 Simple Factory 简单工厂模式

    外观模式是一种结构型设计模式,它的主要目标是提供一个统一的接口,用来简化对复杂系统的访问。在Java中,当你有一个复杂的子系统,而你希望客户端代码能够以一种更简洁、更易于理解的方式来与之交互时,就可以使用...

    C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) (Level 300)

    **外观模式(Facade Pattern)**是面向对象设计模式中的一种结构型模式,它提供了一个统一的接口,用于访问子系统中的各个部分。在C#编程中,外观模式可以帮助我们简化复杂的系统接口,使得客户端代码与复杂的内部...

    23种设计模式 (创建型,结构型,行为型)

    外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: ...

    通过C++实现外观模式(Facade Pattern).rar

    在C++中,外观模式(Facade Pattern)同样用于为子系统中的一组接口提供一个统一的接口,使得子系统更容易使用。压缩包文件代码是一个简单的C++实现外观模式的示例。 1、定义各个子系统的类及其接口。 2、定义外观类...

Global site tag (gtag.js) - Google Analytics