`
gengu
  • 浏览: 86546 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

门面模式

阅读更多

我们先来讨论一个很常见的问题。

餐馆吃饭的问题。

在有些餐馆,客人进去吃饭是需要自己找座位,自己倒茶,自己写菜单,然后将菜单交给服务员,由服务员去完成剩下的工作。

但是也有很多那种高级的餐厅,或者服务很周到的餐厅是这样做的,你一进门,就会有服务员领着你到给你安排座位(我们现在假设安排座位是专门一个部门来完成的,只是这个服务员直接问了座位部那些座位是空的,然后领着去对应的地方就可以了)。然后你坐下之后服务员给你端茶倒水(茶水有茶水部门来负责泡茶,烧水之类的),然后你告诉服务员我现在要吃什么菜,服务员帮你写下菜单就可以了。

 

如果是这样的话,你每次吃饭是不是会心里很爽呢?对啊,你什么也没有做,都是服务员帮你完成的,你完全没有自己去找座位,自己去倒茶,自己写菜单。

 

这就是门面模式的定义:将有顺序的,有规律的,事情交给一个门面来做。

 

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行,门面模式提供一个高层次的接口,使得子系统更容易使用。这是它的官方定义。那么我们来看看怎么实现它呢。

 

BoardDepartment 这是管理座位的部门

package com.gengu.门面模式;

/**
 * 座位系统
 * 帮助用户找座位
 * */
public class BoardDepartment {

	//给客人找空位
	public void providBoard(){
		System.out.println("给客人分配座位号为"+new java.util.Random().nextInt(100));
	}
}

 TeaDepartment 管理负责茶水的部门

package com.gengu.门面模式;

/**
 * 茶水部
 * 专门负责给人提供茶水
 * */
public class TeaDepartment {

	//提供茶水
	public void Provide(){
		System.out.println("给客人提供乌龙茶");
	}
}
 
package com.gengu.门面模式;

/**
 * 帮客人完成菜单
 * 菜单部门
 * */
public class MenuDepartment {

	//给客人找空位
	public void providMenu(String message){
		System.out.println("客人点的菜是"+message);
		//doSomeThing
		
	}
}

 下面是门面模式的核心,Facade 客户端可以调用这个角色的方法,此角色直销子系统的所有功能和责任,一般情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去,也就是上面的相关部门。

package com.gengu.门面模式;

/**
 * 门面模式的
 * 这是餐厅的一个侍者
 * 他负责帮客人端茶递水,找座位,写菜单之类的操作
 * */
public class Waiter {
	
	BoardDepartment boardDepartment = new BoardDepartment();
	TeaDepartment teaDepartment = new TeaDepartment();
	MenuDepartment menuDepartment = new MenuDepartment();
	//帮助客人
	public void helpCustomer(String message){
		boardDepartment.providBoard();
		teaDepartment.Provide();
		menuDepartment.providMenu(message);
	}
}

 

下面是客户端

package com.gengu.门面模式;

public class Client {
	public static void main(String[] args) {
		 Waiter waiter = new Waiter();
		 waiter.helpCustomer("鱼香肉丝");
	}
}

 客户端要做的事情非常少,就是仅仅完成说出是什么菜就完成了,剩下的一切都由门面模式来完成了。

 

 

分享到:
评论

相关推荐

    门面模式门面模式

    门面模式(Facade Pattern)是一种结构型设计模式,它的主要目的是提供一个统一的接口,用来访问子系统中的一组接口。这个接口使得子系统更容易使用,同时也减少了客户端代码与子系统之间的耦合。门面模式通常用于...

    门面模式(代码)

    门面模式(Facade Pattern)是一种设计模式,属于结构型模式,它的主要目的是为了解耦复杂的系统,提供一个统一的入口,使得外部客户端可以更简单、更方便地与系统交互,而无需关注系统的内部实现细节。在门面模式中...

    设计模式C++学习之门面模式(Facade)

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

    门面模式(PPT)

    门面模式(Facade Pattern)是一种设计模式,它在软件工程中扮演着简化复杂系统接口的角色。门面模式的核心思想是为一个复杂的子系统提供一个单一、简洁的接口,使得客户端可以更容易地理解和使用该子系统,而无需...

    JAVA设计模式(门面模式)—视频

    什么是门面模式(Facade) 外部与一个子系统的通信必须通过一个统一的门面对象进行。这就是门面模式。 门面模式的结构 涉及两个角色: 门面角色:客户端可以调用这个角色的方法。此角色知道子系统的功能和责任。在...

    Java实现的门面模式

    门面模式(Facade Pattern)是设计模式中的一种结构型模式,它的主要目的是为了解决复杂的系统接口提供一个简单易用的统一入口。在Java中,门面模式的应用可以帮助我们更好地组织代码,降低系统的耦合度,提高代码的...

    设计模式之门面模式Java实现和类设计图

    门面模式(Facade Pattern)是软件工程中一种常用的设计模式,属于结构型模式,它提供了一个统一的接口,用于访问子系统中的一组接口。在面向对象设计中,门面模式为子系统提供了更简单的接口,使得客户端可以更容易...

    Android也架构之四:门面模式解析获取的html代码

    门面模式(Facade Pattern)是一种设计模式,属于结构型模式,它为子系统提供了一个统一的接口,使得客户端可以更方便地使用子系统的功能,而无需了解子系统内部的复杂性。在Android开发中,门面模式同样发挥着重要...

    设计模式之门面模式(附demo)

    门面模式(Facade Pattern)是软件工程中一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一组接口。这个统一的接口使得客户端不必了解子系统内部的复杂性,只需要与门面进行交互即可。门面模式简化...

    C++设计模式课件14_Facade_门面模式.pdf

    ### C++设计模式之门面模式(Facade Pattern) #### 一、门面模式概述 在软件工程领域,设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易...

    设计模式之门面模式

    门面模式(Facade Pattern)是软件工程中一种常用的设计模式,属于结构型模式。它提供了一个统一的接口,用来访问子系统中的一群接口。门面模式使得子系统的使用更为简单,同时也隐藏了子系统的复杂性,使得客户端...

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

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

    23种设计模式--门面模式

    门面模式(Facade Pattern)是软件工程中一种常用的设计模式,属于结构型模式。它为一个复杂的子系统提供了一个统一的接口,使得客户端可以更容易地使用这个子系统,而无需了解其内部的具体实现细节。在实际开发中,...

    门面模式Demo

    门面模式(Facade Pattern)是一种结构型设计模式,它的主要目的是提供一个统一的接口,用于客户端访问复杂的子系统。在大型软件系统中,通常会有很多个子系统,每个子系统都有自己的职责,而门面模式就是为了让...

    设计模式之门面模式(Facade模式)

    设计模式之门面模式(Facade模式),介绍门面模式,实际例子分析,代码讲解等

    结构型模式之门面模式(Facade)

    门面模式(Facade)是软件设计模式中的一种结构型模式,它的主要目的是为了解耦复杂的系统,通过提供一个简单的统一接口来屏蔽子系统的复杂性,使得客户端与子系统的交互变得更加简单和直观。在大型软件系统中,往往...

    设计模式之门面模式.docx

    门面模式,作为设计模式的一种,旨在为复杂的子系统提供一个简洁统一的接口,从而简化客户端与子系统之间的交互。这种模式由三个主要角色构成:门面角色、子系统角色和客户角色。门面角色是核心,它理解子系统的功能...

    java门面模式,简单入门

    门面模式(Facade Pattern)是软件工程中一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一组接口。这个统一接口就是门面,它为复杂的子系统提供了一个简单的接口,使得客户端无需了解子系统内部的...

    经典的EJB模式——门面模式

    门面模式,作为一种软件设计模式,是EJB(Enterprise Java Beans)中的一种经典模式,它在企业级应用开发中起到简化复杂系统接口的作用。EJB是Java编程语言中用于构建服务器端企业级应用的组件,它们是可分布式部署...

Global site tag (gtag.js) - Google Analytics