`

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

阅读更多

 

外观模式

外观模式又叫门面模式,提供一个统一的接口,来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

 

 

这里我们使用观看电影的实例,我们假设观看一部影片(watchMovie())的步骤:1.投影开2.幕布放下3.DVD播放4.音响打开;结束放映(closed())的操作应该是反过来的

 

实践步骤:

1>我们新建一个投影机(Diascope)类、幕布(Curtain)类、DVD类、音响(Sounder)类

 

package com.kaishengit.facade;

public class Diascope {
	public void on(){
		System.out.println("投影开");
	}
	public void off(){
		System.out.println("投影关");
	}
}

 

 

 

package com.kaishengit.facade;

public class Curtain {
	public void put(){
		System.out.println("幕布放下");
	}
	public void get(){
		System.out.println("幕布收起来");
	}
}

 

 

 

package com.kaishengit.facade;

public class Dvd {
	public void play(){
		System.out.println("DVD播放");
	}
	
	public void close(){
		System.out.println("DVD关闭");
	}
}

 

 

 

package com.kaishengit.facade;

public class Sounder {
	public void on(){
		System.out.println("音响打开");
	}
	public void off(){
		System.out.println("音响关闭");
	}
}

 

 

2>我们新建一个外观(Facade)类

 

package com.kaishengit.facade;


public class Facade {
	private Diascope diascope;
	private Curtain curtain;
	private Dvd dvd;
	private Sounder sounder;
	
	/**
	 * 通过构造方法分别传入投影仪、幕布、Dvd、音响对象
	 * @param diascope
	 * @param curtain
	 * @param dvd
	 * @param sounder
	 */
	public Facade(Diascope diascope,Curtain curtain,Dvd dvd,Sounder sounder){
		this.diascope = diascope;
		this.curtain  = curtain;
		this.dvd = dvd;
		this.sounder = sounder;
	}
	
	/**
	 * 观看影片
	 */
	public void watchMovie(){
		diascope.on();//投影开
		curtain.put();//幕布放下
		dvd.play();//Dvd播放
		sounder.on();//音响打开
	}
	/**
	 * 结束放映
	 */
	public void closed(){
		sounder.off();//音响关闭
		dvd.close();//Dvd关闭
		curtain.get();//幕布拉上
		diascope.off();//投影关闭
	}
	
	
}

 

 

3>我们测试一下

 

package com.kaishengit.facade;

public class Test {
	public static void main(String[] args) {
		Facade facade = new Facade(new Diascope(), new Curtain(), new Dvd(), new Sounder());
		facade.watchMovie();//观看放映
		//facade.closed();//结束放映
	}
}

 

 运行结果:

-------------------------------

投影开

幕布放下

DVD播放

音响打开

-------------------------------

 

 

关于外观模式

1>当需要简化并统一一个很大的接口或者一群复杂的接口时,应该使用外观模式

2>外观将客户从一个复杂的子系统中解耦

3>实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统完成

4>你可以为子系统实现一个以上的外观

5>适配器模式重点在于转换,外观模式重点在于简化

 

 

-------end-----------

2
14
分享到:
评论

相关推荐

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

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

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

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

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

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

    设计模式:可复用面向对象软件的基础--详细书签版

    4.5 facade(外观)—对象结构型 模式 121 4.6 flyweight(享元)—对象结构型 模式 128 4.7 proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 4.8.1 adapter与bridge 144 4.8.2 composite、...

    设计模式之外观模式 facade

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

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

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

    设计模式面面观(14):享元模式(Facade Pattern)-结构型模式

    设计模式面面观(14):享元模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/25/2326692.aspx

    外观模式 Facade Pattern

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

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

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

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

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

    软件设计模式作业+答案

    外观模式(Facade Pattern):提供了一个统一的接口,以便于访问和操作子系统中的多个接口。 行为型软件设计模式: 迭代器模式(Iterator Pattern):提供了一种遍历集合对象的接口,隐藏了集合对象的内部实现细节...

    设计模式 之 “门面模式[Facade Pattern]”

    门面模式(Facade Pattern)是软件工程中一种常用的结构型设计模式,它的主要目的是提供一个统一的接口,用来简化系统中一组复杂的接口或类的使用。这个模式将复杂的子系统接口封装在一个简单的门面对象中,使得...

    设计模式PPT

     外观模式(Facade Pattern)  享元模式(Flyweight Pattern)  代理模式(Proxy Pattern) 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式:  责任链模式(Chain of ...

    C++设计模式基础教程.pdf

    11.外观模式(Facade Pattern):为子系统中的一组接口提供一个一致的界面。 行为型模式 行为型模式主要用来对类或对象怎样交互和怎样分配职责进行描述,包括11种设计模式: 13. 模板方法模式(Template Method ...

    设计模式外观模式PPT学习教案.pptx

    在软件设计中,外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口来访问子系统中的多个接口,从而简化了子系统的使用和维护。本节课程将详细介绍外观模式的定义、结构、实例、优点和应用场景...

    解析C#设计模式编程中外观模式Facade Pattern的应用

    外观模式(Facade Pattern)是设计模式中的一种结构型模式,其主要目的是为了简化客户端与复杂系统之间的交互。在C#编程中,外观模式通常用于减少客户端对子系统组件的依赖,提供一个统一的、高层次的接口,使得...

    Java设计模式之禅

    5. 外观模式(Facade Pattern):为子系统中的一组接口提供一个统一的界面。 6. 享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象。 7. 门面模式(Front Controller Pattern):提供一个统一...

    设计模式之外观模式

    外观模式(Facade Pattern)是设计模式中的一种结构型模式,它的主要目的是为了解耦系统,提供一个统一的入口,使得客户端可以更容易地使用复杂的子系统。在Java中,外观模式通常用于简化对复杂系统的访问,它创建了...

    C#23种设计模式【完整】.pdf

    10. 外观模式(Facade Pattern):为子系统中的一组接口提供一个一致的界面,定义了一个高层接口,使得子系统更加易于使用。 11. 享元模式(Flyweight Pattern):使用共享技术来最小化对象的存储空间,避免大量相同...

Global site tag (gtag.js) - Google Analytics