• 最近又看了一波设计模式的东西,又有一些新的认识,设计模式一般是重构到模式,模式不是一蹴而就的,很多最开始在实现产品经理的需求时,第一版是不太能识别模式的,当然如果后期的迭代需求方向明确也可做提前设计,因为对业务不够了解,对模式的学习最基本的是需要识别稳定点和变化的点。

1.假设系统全部都是无变化的,那设计模式就是无意义的。
2.如果系统各个部分都是变化的,那没有任何模式可以解决问题。

从实际需求分布来看,绝大部分的需求是符合设计模式的特征的,所以最关键的就是识别系统中需求中的变化点与稳定的点,尝试去把变化的部分管理起来,即变化的部分是相对可识别的,学习设计模式的一个捷径就是分析各种模式结构的稳定与变化的部分,这样就能够识别出它解决的问题,对之印象深刻。

学习模式的四个阶段。
1.不知道设计模式,心中无剑,手中无剑。
2.心中有剑,手中无剑。了解设计模式,并能够
3。心中有剑,手中有剑。可以应用到业务场景。
4。心中有剑,手中无剑。可以在面向对象设计原则基础上创造新的“模式“

很多模式已经被一些语法糖或则是其他的语言特性给解决了,例如享元模式本质就是缓存机制,我们可以使用guava缓存解决,甚至可以自己维护一个Map,例如单例模式也被spring框架容器给实现了,迭代器模式也被Java语法层面给实现了。

  • 要有应用框架的思维,而不是埋头写实现,例如模板方法,把核心步骤抽象到抽象类,把具体一些需要应用程序实现代码定义为抽象方法(或默认实现),让应用程序开发人员去实现。方法的早绑定可以尽量定义出稳定的框架。设计模式的终极目的是抵御变化带来的工作量。

最后感谢李建忠老师的讲解,让我重新认识了设计模式

清华李建忠设计模式课程感想相关推荐

  1. 李建忠设计模式——观察者模式

    1.观察者模式(Observer/Event) 1.动机 在软件构建过程中,需要为某些对象建立一种"通知依赖关系"--一个对象(目标)的状态发生改变,所有的依赖对象(观察者对象)都 ...

  2. 李建忠设计模式——策略模式Strategy

    目录 1.策略模式定义 1.动机 2.模式定义 3.结构 2.实现例子 1.问题描述 2.代码实现 3.要点总结 4.参考 1.策略模式定义 1.动机 软件构建过程中,某些对象使用的算法可能多种多样, ...

  3. 李建忠设计模式-组件协作模式-模板方法模式

    目录 1.前言 2.模板方法模式(Template Method) 1.动机 2.例子 3.定义 1.结构图 2.模板方法模式适用情形 3.模式特点 参考 1.前言 现代软件专业分工后的第一个结果是& ...

  4. 李建忠设计模式之总结

    总结 一个目标:管理变化,提高复用! 两个手段:分解 && 抽象 八大原则 依赖倒置原则(DIP) 开放封闭原则(OCP) 单一职责原则(SRP) Liskov 替换原则(LSP) 接 ...

  5. 李建忠设计模式——装饰模式

    1."单一职责"模式 在软件组件的设计中,如果责任划分不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任. 典型模式 Deco ...

  6. 李建忠设计模式(二)

    目录 1.23种设计模式的分类 1.GOF-23模式分类 2.从封装变化校对对模式分类 3.重构关键技法 1.23种设计模式的分类 设计模式的最大作用:在变化和稳定中间寻找隔离点,然后来分离它们,从而 ...

  7. 李建忠设计模式——桥模式

    目录 1.桥模式 1.动机 2.模式定义 3.结构图 4.模式的组成 2.实例 1.描述 2.代码实现 要点总结 参考: 1.桥模式 1.动机 由于某些类型的固有的实现逻辑,使得他们具有两个变化的维度 ...

  8. 李建忠设计模式(一)

    目录 1.软件设计的目标 2.面向对象设计原则 1.重新认识面向对象 2.面向对象设计原则 1.依赖倒置原则(DIP) 2.开放封闭原则(OCP) 3.单一职责原则(SRP) 4.Liskov替换原则 ...

  9. 李建忠设计模式之“单一职责”模式

    文章目录 装饰器模式(Decorator) 定义 动机 结构图 代码 要点 总结 桥方法模式(Bridge) 定义 动机 结构图 代码 要点 总结 在软件组件的设计中,如果责任划分的不清晰,使用继承得 ...

最新文章

  1. NetCore TagHelpers标签
  2. oracle 数据库运维技术,Oracle数据库智能运维标准化工艺研究-orastar-DIY数据库运维工具-第1期 导论篇...
  3. 《cocos2d-x手机游戏开发实战》直播课程第一期介绍
  4. 计算机基础知识的重点,计算机基础知识重点
  5. 海洋CMS v6.53 v6.54命令执行
  6. Rsync 实现远程同步
  7. 手把手教你用ArcGIS做张降雨量分布专题图
  8. mac 安装virtualbox虚拟机
  9. MySQL和Navicat基本使用
  10. fun在c语言中意义与用法,fun的用法
  11. nexmo 验证码的使用
  12. vue2 ElementUI 表单标签、表格表头添加问号图标提示
  13. Hadamard 积, Kronecker 积 和 Khatri- Rao积
  14. 软考软件评测师备考攻略
  15. Android系统源码分析/多媒体框架/音频子系统/常用结构体分析-audio.h
  16. web程序设计(3)——使用CSS设计新闻网页
  17. OCP/OCA Oracle 学习001
  18. C# 创建Windows Service(Windows服务)程序
  19. 揽一帘心事,掬一捧清泉
  20. SEO工具,云优必备!

热门文章

  1. linux用飞信发短信
  2. 怎么设置计算机的开机音乐,Xp电脑怎么设置开关机音乐|xp系统如何修改开机音乐...
  3. 不再羡慕小说中的爱情...
  4. Alpine镜像介绍
  5. CSS 艺术之暗系魔幻卡牌
  6. 真有人去炸公司了...
  7. Java窗体实现飞机躲子弹游戏
  8. Android studio诗词app古诗词中国风记事本ui设计中国古诗词
  9. php老师把毕生的功力,为了表现雨下的凶残程度,网友都使出了毕生的功力
  10. 最大公约数(Java)