【设计模式】【门面模式,收银-厨师-服务,用户就餐】

/**
 * Description:
 * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public interface Payment
{
	//模拟顾客支付费用的方法
	String pay();
}
/**
 * Description:
 * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class PaymentImpl
	implements Payment
{
	//模拟顾客支付费用的方法
	public String pay()
	{
		String food = "快餐";
		System.out.println("你已经向收银员支付了费用,您购买的食物是:"
			+ food);
		return food;
	}
}
/**
 * Description:
 * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public interface Cook
{
	//模拟烹调食物的方法
	String cook(String food);
}
/**
 * Description:
 * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public interface Cook
{
	//模拟烹调食物的方法
	String cook(String food);
}
/**
 * Description:
 * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public interface Cook
{
	//模拟烹调食物的方法
	String cook(String food);
}
/**
 * Description:
 * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public interface Cook
{
	//模拟烹调食物的方法
	String cook(String food);
}
/**
 * Description:
 * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class Facade
{
	//定义被Facade封装的三个部门
	Payment pay;
	Cook cook;
	Waiter waiter;
	//构造器
	public Facade()
	{
		this.pay = new PaymentImpl();
		this.cook = new CookImpl();
		this.waiter = new WaiterImpl();
	}
	public void serveFood()
	{
		//依次调用三个部门的方法,封装成一个serveFood()方法
		String food = pay.pay();
		food = cook.cook(food);
		waiter.serve(food);
	}
}
/**
 * Description:
 * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class Customer
{
	public void haveDinner()
	{
		//依次创建三个部门实例
/*		Payment pay = new PaymentImpl();
		Cook cook = new CookImpl();
		Waiter waiter = new WaiterImpl();
		//依次调用三个部门实例的方法来实现用餐功能
		String food = pay.pay();
		food = cook.cook(food);
		waiter.serve(food);*/
		//直接依赖于Facade类来实现用餐方法
		Facade f = new Facade();
		f.serveFood();
	}
	public static void main(String[] args)
	{
		new Customer().haveDinner();
	}
}
时间: 2024-08-03 11:05:57

【设计模式】【门面模式,收银-厨师-服务,用户就餐】的相关文章

经典设计模式——门面模式

   随着系统的不断改进和开发的深入,它们会变得越来越复杂,系统会生成大量的类,这使得程序更难被理解.门面模式可谓这些类提供一个简化的接口,从而简化访问这些类的复杂性,有时候这种简化可能降低访问这些底层累的灵活性,但除了要求特别苛刻的客户端之外(即调用方法的类),它通常都可以提供所需的全部功能.当然,那些苛刻的客户端仍然可以直接访问底层的类和方法.     门面(Facade)模式也被称为正面模式.外观模式,这种模式用于将一组复杂的类包装到一个简单的外部接口中.     现在考虑这样的场景:我们

8、Python与设计模式--门面模式

一.火警报警器(1) 假设有一组火警报警系统,由三个子元件构成:一个警报器,一个喷水器,一个自动拨打电话的装置.其抽象如下: class AlarmSensor: def run(self): print "Alarm Ring..." class WaterSprinker: def run(self): print "Spray Water..." class EmergencyDialer: def run(self): print "Dial 11

PHP设计模式——门面模式

声明:本系列博客参考资料<大话设计模式>,作者程杰.         门面模式(有时候也称外观模式)是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口.使用子系统更容易使用.                  案例:炒股票,新股民不了解证券知识做股票,是很容易亏钱的,需要学习的知识太多了,这样新手最好把炒股的事情委托给基金公司,基金公司了解证券知识,那么新股民把自己的股票托管给基金公司去运营,这样新股民不必了解哪只股票的走势就可以完成股票的买卖

设计模式之禅之设计模式-门面模式

一:门面模式的定义        --->门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式        --->要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行.门面模式提供一个高层次的接口,使得子系统更易于使用.        --->门面模式注重"统一的对象",也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为发生        --->这正是我们设计所需要的模式,不改变子系统对外暴露的接口

学习php设计模式 php实现门面模式(Facade)_php技巧

一.意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层次的接口,使得子系统更加容易使用[GOF95] 外部与子系统的通信是通过一个门面(Facade)对象进行.二.门面模式结构图 三.门面模式中主要角色门面(Facade)角色: 此角色将被客户端调用 知道哪些子系统负责处理请求 将用户的请求指派给适当的子系统 子系统(subsystem)角色: 实现子系统的功能 处理由Facade对象指派的任务 没有Facade的相关信息,可以被客户端直接调用 可以同时有一个或多个子系

Java设计模式详解之门面模式(外观模式)_java

门面模式(Facade Pattern)也叫外观模式,它隐藏系统的复杂性,并向客户端提供一个可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性,为子系统中的一组接口提供了一个统一的高层访问接口,这个接口使得子系统更容易被访问或使用.这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用. 简而言之,就是把一堆复杂的流程封装成一个接口供给用户更简单的使用,这个设计模式里有三个角色: 1)门面角色( facade ):

用户体验设计:电子商务网站的收银系统设计

文章描述:一个步骤中嵌套另一个步骤的做法会让用户感觉迷茫和恐惧,因为它和用户完成付款时线性操作的心理模型不一致. 要点:一个步骤中嵌套另一个步骤的做法会让用户感觉迷茫和恐惧,因为它和用户完成付款时线性操作的心理模型不一致. 在这些网站中,沃尔玛和Zappos都是采用非线性的收银流程.两者都是在其付款流程中了嵌套另一个分支流程.比如,让用户在另一个页面中设置"首选送货地址"(沃尔玛)或"创建新账户"(Zappos), 然后再回到原来的页面继续付款.下面是沃尔玛的操作流

微信服务号开发模式下,如何获取用户发送给服务号的信息,转给客服,再将客服回答信息转给用户?

问题描述 微信服务号开发模式下,如何获取用户发送给服务号的信息,转给客服,再将客服回答信息转给用户? 开发一个微信转接接口,需求是:微信服务号在开发者模式下,也就是有基本配置(服务器配置),获取到用户向服务号发送的信息,转接到在线客服,然后客服回答的信息在转接到用户,起到转接作用. 解决方案 收到信息后回复success或者空内容,保存微信发送的相关信息:http://mp.weixin.qq.com/wiki/1/6239b44c206cab9145b1d52c67e6c551.html 怎么

Java设计模式之门面模式使用详解

门面模式有三个角色组成: 1)门面角色( facade ):这是门面模式的核心.它被客户角色调用,因此它熟悉子系统的功能.它内部根据客户角色已有的需求预定了几种功能组合. 2) 子系统角色:实现了子系统的功能.对它而言, façade 角色就和客户角色一样是未知的,它没有任何 façade 角色的信息和链接. 3)客户角色:调用 façade 角色来完成要得到的功能  模式作用: 将一些复杂的操作封装起来,以一个简单的接口提供给客户端. 可以定义多个子系统, 层次之间的粗细粒度需要把握好.一个子