/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2016, 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-2016, 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 CookImpl implements Cook { // 实现模拟烹调食物的方法 public String cook(String food) { System.out.println("厨师正在烹调:" + food); return food; } }
/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2016, 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(); } }
/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2016, 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-2016, 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-2016, 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-2016, 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 Waiter { // 模拟服务生上菜的方法 void serve(String food); }
/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2016, 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 WaiterImpl implements Waiter { // 模拟服务生上菜的方法 public void serve(String food) { System.out.println("服务生已将" + food + "端过来了,请慢用..."); } }