zoukankan      html  css  js  c++  java
  • 设计模式之禅——心得总结

    故事主角:我

    自称:本座

    爱称:wavky仔

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

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

    故事情节:(略)

    总结:

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

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

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

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

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

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

      单例模式

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

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

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

      工厂模式

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

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

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

      适配器模式

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

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

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

      模板模式

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

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

      迭代器模式

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

      = 无限期待续... =

  • 相关阅读:
    118/119. Pascal's Triangle/II
    160. Intersection of Two Linked Lists
    168. Excel Sheet Column Title
    167. Two Sum II
    172. Factorial Trailing Zeroes
    169. Majority Element
    189. Rotate Array
    202. Happy Number
    204. Count Primes
    MVC之Model元数据
  • 原文地址:https://www.cnblogs.com/wavky/p/3330393.html
Copyright © 2011-2022 走看看