研磨设计模式--外观模式

外观模式本质:

封装交互,简化调用
demo:下面使用外观模式写一个简单的代码生成器
将要创建的类:
ConfigModel:配置描述的数据model
ConfigManager:配置管理
Presentation:表现层的模块
Business:逻辑层的代码
Dao:数据层的模块
Facade:组装模块
Client:消费者

@Data
public class ConfigModel {
    /**
     * 是否需要生成表现成,默认是true
     */
    private boolean needGenPresentation = true;

    /**
     * 是否需要生成逻辑层,默认是true
     */
    private boolean needGenBusiness = true;

    /**
     * 是否需要生成Dao,默认是true
     */
    private boolean needGenDao = true;


}

public class ConfigManager {
    private static ConfigManager manager = null;
    private static ConfigModel cm = null;

    public ConfigManager() {
    }
    public static ConfigManager getInstance(){
        if(manager == null){
            manager = new ConfigManager();
            cm = new ConfigModel();
            // 读取配置文件, 把值设置到ConfigModel中去,这里省略
        }
        return manager;
    }

    /**
     * 获取配置的数据
     * @return
     */
    public ConfigModel getConfigData(){
        return cm;
    }
}

public class Presentation {
    public void generate(){
        // 从配置管理里面获取相应的配置信息
        ConfigModel cm = ConfigManager.getInstance().getConfigData();
        if(cm.isNeedGenPresentation()){
            // 按照要求去生成对应的代码,并保存成文件
            System.out.println("正在生成表现层代码文件");
        }
    }
}

public class Business {
    public void generate(){
         ConfigModel cm = ConfigManager.getInstance().getConfigData();
         if(cm.isNeedGenBusiness()){
             System.out.println("生成逻辑层代码文件");
         }
    }
}

public class Dao {
    public void generate(){
        ConfigModel cm = ConfigManager.getInstance().getConfigData();
        if(cm.isNeedGenDao()){
            System.out.println("生成数据库层代码文件");
        }
    }
}

public class Facade {

    public void generate(){
        new Presentation().generate();
        new Business().generate();
        new Dao().generate();
    }
}
public class Client {
    public static void main(String[] args) {
        new Facade().generate();
    }
}

外观模式的优点:

松散耦合
简单易用
更好地划分访问的层次

外观模式的缺点:

过多的或者不太合理的Facade容易让人迷惑,到底是调用Facade还是直接调用方法本身呢。

何时选择外观模式:

1、如果你希望为一个复杂的子系统提供一个简单接口的时候,可以考虑使用外观模式。
2、如果想要让客户程序和抽象类的实现部分松散耦合,可以考虑使用外观模式。
3、如果构建多层结构的系统,可以考虑使用外观模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本电子书一共两个压缩文档,该文档为part1。 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,培养正确的“设计观”;中高级内容则深入探讨如何理解这些模式,包括模式中蕴涵什么样的设计思想,模式的本质是什么,模式如何结合实际应用,模式的优缺点以及与其他模式的关系等,以期让读者尽量去理解和掌握每个设计模式的精髓所在。    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础    第2章 简单工厂    第3章 外观模式    第4章 适配器模式(Adapter)    第5章 单例模式(Singleton)    第6章 工厂方法模式(Factory Method)    第7章 抽象工厂模式(Abstract Factory)    第8章 生成器模式(Builder)    第9章 原型模式(Prototype)    第10章 中介者模式(Mediator)    第11章 代理模式(Proxy)    第12章 观察者模式(Observer)    第13章 命令模式(Command)    第14章 迭代器模式(Iterator)    第15章 组合模式(Composite)    第16章 模板方法模式(Template Method)    第17章 策略模式(Strategy)    第18章 状态模式(State)    第19章 备忘录模式(Memento)    第20章 享元模式(Flyweight)    第21章 解释器模式(Interpreter)    第22章 装饰模式(Decorator)    第23章 职责链模式(Chain of Responsibility)    第24章 桥接模式(Bridge)    第25章 访问者模式(Visitor)    附录A常见面向对象设计原则    附录BUML简介    参考文献

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值