门面模式
来源:互联网 发布:java语言代码大全 编辑:程序博客网 时间:2024/09/21 08:49
随着软件处理的业务越来越大,一个业务逻辑类里面可能涉及到很多个类进行实现,这样会增加该类的复杂度。使用门面设计模式可以很好滴解决这个问题。门面模式:也可以成为正面模式、外观模式,将一组复杂的类包装到一个简单的接口中进行实现。J2EE的DAO组件和HibernateTemplate中使用了这种设计模式。下面以客户下馆子就餐为例讲解门面模式,下馆子就餐要分为:1. 在点好餐后在收银台付账;2. 厨师烹饪你的食物;3. 服务员为你上餐。每一步都是一个部门,就用一个类来封装。
1.
package com.lanp.facade;
/**
* 收银台支付类
* @author LanP
* @version v1.0
*/
public interface IMyPayment {
String pay();
}
2.
package com.lanp.facade;
/**
* 收银台支付类的实现
* @author LanP
* @version v1.0
*/
public class MyPaymentImpl implements IMyPayment {
@Override
public String pay() {
String food = "客家酿豆腐";
System.out.println("你已经成功为 " + food + " 支付了!");
return food;
}
}
3.
package com.lanp.facade;
/**
* 烹饪部门接口
* @author LanP
* @version v1.0
*/
public interface IMyCook {
String cooking(String food);
}
4.
package com.lanp.facade;
/**
* 烹饪部门接口的实现
* @author LanP
* @version v1.0
*/
public class MyCookImpl implements IMyCook {
@Override
public String cooking(String food) {
System.out.println("厨师正在为你做:" + food);
return food;
}
}
5.
package com.lanp.facade;
/**
* 服务员接口
* @author LanP
* @version v1.0
*/
public interface IMyWaiter {
void service(String food);
}
6.
package com.lanp.facade;
/**
* 服务员接口实现
* @author LanP
* @version v1.0
*/
public class MyWaiterImpl implements IMyWaiter {
@Override
public void service(String food) {
System.out.println("你好,你点的食物 " + food + " 已经为你准备好了,请慢用!");
}
}
7.
package com.lanp.facade;
/**
* 客户在餐馆就餐的门面类
* @author LanP
* @version v1.0
*/
public class MyFacade {
private IMyPayment myPayment;
private IMyCook myCook;
private IMyWaiter myWaiter;
public MyFacade() {
myPayment = new MyPaymentImpl();
myCook = new MyCookImpl();
myWaiter = new MyWaiterImpl();
}
public void serviceFood() {
//点餐并付钱
String food = myPayment.pay();
//厨师烹饪
myCook.cooking(food);
//服务员上餐
myWaiter.service(food);
}
}
8.
package com.lanp.facade;
/**
* 客户类
* @author LanP
* @version v1.0
*/
public class MyCustomer {
public void haveDinner() {
new MyFacade().serviceFood();
}
public static void main(String[] args) {
new MyCustomer().haveDinner();
}
}
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- 门面模式
- PHP网页缓存技术
- eclipse中svn图标的说明
- Linux C编程一站式学习
- Xshell 4.0 Build 0094 汉化版发布
- 现在可用:跨地域备份和Windows Azure 存储的Blob、Table 和 Queue的新特性
- 门面模式
- 位域
- 山寨别人的游戏会被告侵权么
- 让datagridview 出现 下拉框
- python post with multipart_form-data
- SQL游标
- log4j的NDC/MDC开发与应用,多线程、多平台环境中的跟踪
- WebMatrix入门教程系列
- 进制转换