设计模式(二)-- 外观模式(Facade)
2013-07-05 23:04
357 查看
设计模式(二)
外观模式(Facade)
为了解决子系统外部的客户端在使用子系统的时候,既能简单地使用这些子系统内部的模块功能,而又不用客户端去与子系统内部的多个模块交互的问题。
为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
外观模式就是通过引入一个外观类,在这个类里面定义客户端想要的简单的方法,然后在这些方法的实现里面,由外观类再去分别调用内部的多个模块来实现功能,从而让客户端变得简单。这样一来,客户端就只需要和外观类交互就可以了。
package Facade;
public classConfigModel {
private boolean needGenPresentation = true;
private boolean needGenBusiness = true;
private boolean needGenDAO = true;
public boolean isNeedGenPresentation(){
return needGenPresentation;
}
public boolean isNeedGenBusiness(){
return needGenBusiness;
}
public boolean isNeedGenDAO(){
return needGenDAO;
}
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();
}
return manager;
}
public ConfigModel getConfigDate(){
return cm;
}
}
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)
为了解决子系统外部的客户端在使用子系统的时候,既能简单地使用这些子系统内部的模块功能,而又不用客户端去与子系统内部的多个模块交互的问题。
为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
外观模式就是通过引入一个外观类,在这个类里面定义客户端想要的简单的方法,然后在这些方法的实现里面,由外观类再去分别调用内部的多个模块来实现功能,从而让客户端变得简单。这样一来,客户端就只需要和外观类交互就可以了。
package Facade;
public classConfigModel {
private boolean needGenPresentation = true;
private boolean needGenBusiness = true;
private boolean needGenDAO = true;
public boolean isNeedGenPresentation(){
return needGenPresentation;
}
public boolean isNeedGenBusiness(){
return needGenBusiness;
}
public boolean isNeedGenDAO(){
return needGenDAO;
}
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();
}
return manager;
}
public ConfigModel getConfigDate(){
return cm;
}
}
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 Pattern)
- 设计模式 - 外观模式(facade pattern) 详解
- 浅谈JAVA设计模式之——外观模式(Facade)
- [设计模式笔记]二. 结构型模式--11.Facade模式(外观模式)(一)
- 设计模式之Facade(外观 总管 Manager)
- C# 设计模式--外观模式(Facade)
- 设计模式之---外观模式(Facade)
- 解读设计模式----外观模式(Facade Pattern),谈阿牛讨媳妇故事
- 初窥设计模式之外观模式(Facade)
- 23种设计模式之外观模式(Facade)
- 设计模式——外观模式(Facade)
- 设计模式学习之外观模式(Facade,结构型模式)(8)
- 设计模式的征途—11.外观(Facade)模式
- 设计模式总结篇系列:外观模式(Facade)
- 设计模式学习笔记——外观(Facade)模式
- 设计模式 - Facade Pattern(外观模式)
- 设计模式之外观模式(Facade)
- 设计模式之Facade-外观模式