【设计模式】【门面模式,收银-厨师-服务,用户就餐】
/**
* Description:
* <br/>网站: <a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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();
}
}
最后更新:2017-04-04 07:03:36
上一篇:
XCode 4.3.2 如何新建 Window-based Application应用的简单例子
下一篇:
mysql 定时脚本(event),类似oracle的job
李飞飞力赞论文:描述视频密集事件新模型 !(附论文)
Windows Server 2008 R2 中 Web 服务器 (IIS) 角色的新增功能
在阿里云ECS上轻松实现无域控的SQL Server AlwaysOn可用性组
智慧医疗会让医疗资源像共享单车一样普及吗?
在Win2003、Win7、XP中配置IIS搭建ASP.NET Web网站或应用程序(1)
网络子系统76_套接字绑定
第三章 AOP 基于Schema的AOP
ObjectArx学习笔记-选择文件及ACHAR用法
黑客离我们有多近?
【分享】小程序购物车demo演示实例(全选与不全选、数量加减、价格汇总、删除提示)