设计模式(二)-- 外观模式(Facade)
来源:互联网 发布:圆方衣柜设计软件 编辑:程序博客网 时间:2024/05/23 19:22
设计模式(二)
外观模式(Facade)
为了解决子系统外部的客户端在使用子系统的时候,既能简单地使用这些子系统内部的模块功能,而又不用客户端去与子系统内部的多个模块交互的问题。
为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
外观模式就是通过引入一个外观类,在这个类里面定义客户端想要的简单的方法,然后在这些方法的实现里面,由外观类再去分别调用内部的多个模块来实现功能,从而让客户端变得简单。这样一来,客户端就只需要和外观类交互就可以了。
package Facade;
public classConfigModel {
private boolean needGenPresentation = true;
private boolean needGenBusiness = true;
private boolean needGenDAO = true;
public boolean isNeedGenPresentation(){
returnneedGenPresentation;
}
public boolean isNeedGenBusiness(){
returnneedGenBusiness;
}
public boolean isNeedGenDAO(){
returnneedGenDAO;
}
public void setNeedGenPresentation(boolean needGenPresentation){
this.needGenPresentation=needGenPresentation;
}
public void setNeedGenBusiness(boolean needGenBusiness){
this.needGenBusiness=needGenBusiness;
}
public void setNeedGenDAO(boolean needGenDAO){
this.needGenDAO=needGenDAO;
}
}
package Facade;
public classConfigManager {
private static ConfigManager manager =null;
private static ConfigModel cm =null;
private ConfigManager(){
//
}
public static ConfigManager getInstance(){
if(manager==null){
manager =new ConfigManager();
cm = new ConfigModel();
}
returnmanager;
}
public ConfigModel getConfigDate(){
returncm;
}
}
package Facade;
public classPresentation {
public void generate(){
ConfigModel cm = ConfigManager.getInstance().getConfigDate();
if(cm.isNeedGenPresentation()){
System.out.println("Generate Presentation Layer");
}
}
}
package Facade;
public classBusiness {
public void generate(){
ConfigModel cm = ConfigManager.getInstance().getConfigDate();
if(cm.isNeedGenBusiness()){
System.out.println("Generate Business Layer");
}
}
}
package Facade;
public classDAO {
public void generate(){
ConfigModel cm = ConfigManager.getInstance().getConfigDate();
if(cm.isNeedGenDAO()){
System.out.println("Generate DAO Layer");
}
}
}
package Facade;
public classFacade {
publicvoidgenerate(){
new Presentation().generate();
new Business().generate();
new DAO().generate();
}
}
package Facade;
public classClient {
publicstaticvoidmain(String[] args){
new Facade().generate();
}
}
Output:
Generate Presentation Layer
Generate Business Layer
Generate DAO Layer
- 设计模式(二)-- 外观模式(Facade)
- 设计模式之二--外观模式(Facade)
- 外观(Facade)设计模式
- 二、外观模式(Facade)
- 设计模式 - 外观(Facade)
- Facade(外观)设计模式
- 设计模式之外观(Facade)模式
- 设计模式之外观模式(Facade)
- 设计模式-外观模式(Facade Pattern)
- 设计模式 (七)外观模式(Facade)
- 设计模式 (七)外观模式(Facade)
- 设计模式 (七)外观模式(Facade)
- 【设计模式】之外观模式(Facade)
- java设计模式-外观模式(Facade)
- 设计模式之外观模式(Facade)
- 设计模式之外观模式(Facade)
- 设计模式之外观(Facade)模式
- 设计模式之外观模式(Facade)
- [C#基础知识之]详解C#中堆和栈的区别
- 小谈:大陆媒体
- 漫画研发之十:小白兔钓鱼
- 我是如何写作一本软件+哲学式的书籍的(上)
- 各种存储器简介
- 设计模式(二)-- 外观模式(Facade)
- 腾讯实习生被鄙视有感
- 用uiscrollView和pageControl 实现翻页
- VC Progress onTimer
- csapp2e 家庭作业 4.46
- 二十三种设计模式笔记
- Cocos2d-x中Class的说明
- 原来学习的就是intel汇编呀
- 一次在RAC下,修改参数后的PFILE,SPFILE转换日志