博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之禅——心得总结
阅读量:6242 次
发布时间:2019-06-22

本文共 1281 字,大约阅读时间需要 4 分钟。

故事主角:我

自称:本座

爱称: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

你可能感兴趣的文章
Angular开发实践(七): 跨平台操作DOM及渲染器Renderer2
查看>>
Laravel 教程 - 实战 iBrand 开源电商 API 系统
查看>>
vue-cli的坑,loader重复的锅 Invalid CSS after "...load the styles"
查看>>
手写Spring之IOC基于xml动态创建对象
查看>>
聊聊reactive streams的tranform操作
查看>>
箭头函数与this
查看>>
Angular4学习笔记之DOM属性绑定
查看>>
java构造list,合并重复的数组
查看>>
紫书第四章例4-4信息解码Message Decoding (处理二进制字符的一种典型例题)
查看>>
一些杂感杂想(三)打理业余时间的一点个人心得
查看>>
Apache Kylin安装部署
查看>>
JavaScript的async 的学习
查看>>
SpringCloud(第 021 篇)Zuul 的过滤器 ZuulFilter 的使用
查看>>
JavaScript笔记——闭包
查看>>
gRPC 初探
查看>>
SpringBoot非官方教程 | 第六篇:SpringBoot整合mybatis
查看>>
dataguard备库出现GAP修复
查看>>
OOD、DIP、IOC、DI、依赖注入容器(即 控制反转容器,IOC Container)
查看>>
Linux常用命令
查看>>
Grub4Dos 手动引导指令
查看>>