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


    故事主角:我

    自称:本座

    爱称:wavky仔

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

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

    故事情节:(略)

    总结:

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

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

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

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

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

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

      单例模式

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

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

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

      工厂模式

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

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

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

      适配器模式

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

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

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

      模板模式

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

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

      迭代器模式

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

      = 无限期待续... =

  • 相关阅读:
    常见问题:bootstrap datepicker日期插件汉化
    好的插件
    问题11:web前端开发规范手册(转)
    问题10:获取当前页面宽度JS
    SQL学习1:基础
    问题9:tabtle 整理
    Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: PermGen space
    测试markdown 博客功能
    Cannot generate SSPI context
    Ubuntu 13 Zookeeper 集群配置
  • 原文地址:https://www.cnblogs.com/wavky/p/3330393.html
Copyright © 2020-2023  润新知