设计模式之禅——心得总结
故事主角:我
自称:本座
爱称:wavky仔
身份:小学生、全国各地电脑城所有门店老板
前序:辞职了两个月,在家休养肥肉一直没搞技术,最近无聊拿起了本新买了半年没碰过的《设计模式之禅》,看了下..
故事情节:(略)
总结:
先说说前6章,六大设计原则,前两天刚看完,没看太懂,大致好像是这样子的:
单一职责原则(SRP)、接口隔离原则、迪米特法则(最少知识原则),分别从类、接口和类关联上阐述一个功能设计上的高内聚低耦合观点,奶奶的用了三个原则几十页文字转弯抹角讲的其实就是一句话:各家自扫门前雪,别多管闲事!
里氏替换原则:讲的是透明继承的设计理念,如果不是使用覆盖(override)刻意改写父类方法实现的话,子类对象必需能够无缝透明的替代父类对象。简单点说就是,避免子类重载(overload)方法抢闸,本该调用对象父类的方法实现却被子类的重载方法优先抢去了,有违老父的意图。具体方法是:子类使用前置条件(形参)相同的override方法覆盖父类方法,或使用前置条件(继承链上)同级或更宽松(父类级别)的overload方法。
依赖倒置原则:就是面向接口编程,使用抽象类或接口实现类关联,完成程序框架搭建,基本的东西没什么好解释的。值得留意一下下的是这里写了实现依赖的三种方式:使用构造函数传递对象、使用setter方法传递和使用方法签名的形参传递,书上写的这三种分别称为构造函数注入、setter依赖注入和接口注入。
开闭原则:这个原则推荐使用继承父类、增加代码、使用配置文件等扩展方式,取代对已有代码的删除修改。除了这一点之外,真心没看懂还有什么别的内涵..书上提到了一个比较有意思的抽象约束:实现类不允许出现接口或抽象类中不存在的public方法;抽象层应保持稳定,一旦确定即不允许修改。
从本座看的顺序逐个讲讲设计模式的使用背景,这里不解释模型了:
单例模式:
1、类对象实例化资源消耗量大;
2、多个对象实例的创建会导致冲突的情况
PS. 可以扩展成多例模式限制对象数量
工厂模式:
1、对象初始化操作复杂,初始化工作量大,对对象初始化工作进行扩展;
2、统一不同实现类的对象实例化接口;
3、管理回收重用对象(对象池,结合单例模式使用背景)
适配器模式:
解决不同系统下对象接口兼容问题
观察者模式(发布订阅模式):
使用事件通知驱动模型,参考监听器用途,java提供默认实现observable类和observer接口
模板模式:
由抽象父类固定算法执行流程,具体执行逻辑由子类实现
PS. 通常使用钩子方法控制算法流程可变部分,提供默认实现并由子类选择覆盖,算法流程根据钩子方法返回结果判断后续执行顺序
迭代器模式:
单独负责集合类的遍历,java提供默认实现iterator
= 无限期待续... =