设计模式之禅——心得总结

故事主角:我

自称:本座

爱称:wavky仔

身份:小学生、全国各地电脑城所有门店老板

前序:辞职了两个月,在家休养肥肉一直没搞技术,最近无聊拿起了本新买了半年没碰过的《设计模式之禅》,看了下..

故事情节:(略)

总结:

  先说说前6章,六大设计原则,前两天刚看完,没看太懂,大致好像是这样子的:

  单一职责原则(SRP)、接口隔离原则、迪米特法则(最少知识原则),分别从类、接口和类关联上阐述一个功能设计上的高内聚低耦合观点,奶奶的用了三个原则几十页文字转弯抹角讲的其实就是一句话:各家自扫门前雪,别多管闲事!

  里氏替换原则:讲的是透明继承的设计理念,如果不是使用覆盖(override)刻意改写父类方法实现的话,子类对象必需能够无缝透明的替代父类对象。简单点说就是,避免子类重载(overload)方法抢闸,本该调用对象父类的方法实现却被子类的重载方法优先抢去了,有违老父的意图。具体方法是:子类使用前置条件(形参)相同的override方法覆盖父类方法,或使用前置条件(继承链上)同级或更宽松(父类级别)的overload方法。

  依赖倒置原则:就是面向接口编程,使用抽象类或接口实现类关联,完成程序框架搭建,基本的东西没什么好解释的。值得留意一下下的是这里写了实现依赖的三种方式:使用构造函数传递对象、使用setter方法传递和使用方法签名的形参传递,书上写的这三种分别称为构造函数注入、setter依赖注入和接口注入。

  开闭原则:这个原则推荐使用继承父类、增加代码、使用配置文件等扩展方式,取代对已有代码的删除修改。除了这一点之外,真心没看懂还有什么别的内涵..书上提到了一个比较有意思的抽象约束:实现类不允许出现接口或抽象类中不存在的public方法;抽象层应保持稳定,一旦确定即不允许修改。

  从本座看的顺序逐个讲讲设计模式的使用背景,这里不解释模型了:

  单例模式

    1、类对象实例化资源消耗量大;

    2、多个对象实例的创建会导致冲突的情况

    PS. 可以扩展成多例模式限制对象数量

  工厂模式

    1、对象初始化操作复杂,初始化工作量大,对对象初始化工作进行扩展;

    2、统一不同实现类的对象实例化接口;

    3、管理回收重用对象(对象池,结合单例模式使用背景)

  适配器模式

    解决不同系统下对象接口兼容问题

  观察者模式(发布订阅模式):

    使用事件通知驱动模型,参考监听器用途,java提供默认实现observable类和observer接口

  模板模式

    由抽象父类固定算法执行流程,具体执行逻辑由子类实现

    PS. 通常使用钩子方法控制算法流程可变部分,提供默认实现并由子类选择覆盖,算法流程根据钩子方法返回结果判断后续执行顺序

  迭代器模式

    单独负责集合类的遍历,java提供默认实现iterator

  = 无限期待续... =

原文地址:https://www.cnblogs.com/wavky/p/3330393.html