大话设计模式 - 程杰
大话设计模式 - 程杰
程序员朱永胜元数据
[!abstract] 大话设计模式
- 书名:大话设计模式
- 作者:程杰
- 简介:《大话设计模式》通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解 GoF(设计模式的经典名著——Design Patterns: Elements of Reusable Object-Oriented Software,中译本名为《设计模式——可复用面向对象软件的基础》的四位作者 Erich Gamma、Richard Helm、Ralph Johnson,以及 JohnVlissides,这四人常被称为 GangofFour,即四人组,简称 GoF)总结的 23 个设计模式。《大话设计模式》共分为 29 章。其中,第 1、3、4、5 章着重讲解了面向对象的意义、好处以及几个重要的设计原则;第 2 章,以及第 6 到第 28 章详细讲解了 23 个设计模式;第 29 章是对设计模式的全面总结。附录部分是通过一个例子的演变为初学者介绍了面向对象的基本概念。《大话设计模式》的特色是通过小菜与大鸟的趣味问答,在讲解程序的不断重构和演变过程中,把设计模式的学习门槛降低,让初学者可以更加容易地理解——为什么这样设计才是好的?是怎样想到这样设计的?以达到不但授之以 “ 鱼 “,还授之以 “ 渔 “ 的目的。引导读者体会设计演变过程中蕴藏的大智慧。
- 出版时间:2007-12-01 00:00:00
- ISBN:9787302162063
- 分类:计算机 - 编程设计
- 出版社:清华大学出版社
- PC 地址:https://weread.qq.com/web/reader/5d932bf0727da1885d91283
高亮划线
1.5 活字印刷,面向对象
📌 第一,要改,只需更改要改之字,此为可维护;第二,这些字并非用完这次就无用,完全可以在后来的印刷中重复使用,此乃可复用;第三,此诗若要加字,只需另刻字加入即可,这是可扩展;第四,字的排列其实可能是竖排可能是横排,此时只需将活字移动就可做到满足排列需求,此是灵活性好
⏱ 2023-06-17 22:18:00 ^41787784-29-1830-1985
1.7 复制 vs. 复用
📌 有人说初级程序员的工作就是 Ctrl+C 和 Ctrl+V,这其实是非常不好的编码习惯,因为当你的代码中重复的代码多到一定程度,维护的时候,可能就是一场灾难。越大的系统,这种方式带来的问题越严重,编程有一原则,就是用尽可能的办法去避免重复
⏱ 2023-06-17 22:20:18 ^41787784-31-768-884
1.11 UML 类图
📌 类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。注意前面的符号,’+’ 表示 public,’-‘ 表示 private,’#’ 表示 protected。
⏱ 2023-06-18 06:14:18 ^41787784-35-869-985
2.3 简单工厂实现
📌 简单工厂模式虽然也能解决这个问题,但这个模式只是解决对象的创建问题
⏱ 2023-06-26 08:56:28 ^41787784-38-2752-2785
3.4 单一职责原则
📌 单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因。
⏱ 2024-01-19 20:40:59 ^41787784-46-1047-1085
3.5 方块游戏的设计
📌 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏
⏱ 2024-01-19 20:42:11 ^41787784-47-1842-1938
📌 软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离
⏱ 2024-01-19 20:43:36 ^41787784-47-2933-2963
📌 如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责
⏱ 2024-01-19 20:43:48 ^41787784-47-2999-3035
第 4 章 考研求职两不误——开放 - 封闭原则
📌 在软件设计模式中,这种不能修改,但可以扩展的思想也是最重要的一种设计原则,它就是开放 - 封闭原则(The Open-Closeed Principle,简称 OCP)或叫开 - 闭原则。^41787784-49-2346-2435
- 💭 对扩展开放,对修改关闭 - ⏱ 2024-01-19 20:48:20
4.3 何时应对变化
📌 在我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化 [
⏱ 2024-01-19 20:50:59 ^41787784-51-1310-1361
📌 面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码
⏱ 2024-01-19 20:51:20 ^41787784-51-1595-1628
📌 开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要
⏱ 2024-01-19 20:51:55 ^41787784-51-2167-2245
5.3 依赖倒转原则
📌 依赖倒转原则,原话解释是抽象不应该依赖细节,细节应该依赖于抽象,这话绕口,说白了,就是要针对接口编程,不要对实现编程
⏱ 2024-01-19 20:55:45 ^41787784-55-1854-1922
5.4 里氏代换原则
📌 一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化,简单地说,子类型必须能够替换掉它们的父类型 [ASD]。” 里氏代换原则(LSP):子类型必须能够替换掉它们的父类型。
⏱ 2024-01-19 20:58:55 ^41787784-56-497-713
6.4 装饰模式
📌 装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活
⏱ 2024-01-19 21:04:18 ^41787784-61-457-516
6.6 装饰模式总结
📌 装饰模式是为已有功能动态地添加更多功能的一种方式
⏱ 2024-01-19 21:20:23 ^41787784-63-489-513
📌 有效地把类的核心职责和装饰功能区分开了。而且可以去除相关类中重复的装饰逻辑
⏱ 2024-01-19 21:21:10 ^41787784-63-1084-1121
7.6 代理模式应用
📌 远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事
⏱ 2024-01-19 21:25:57 ^41787784-69-500-549
📌 虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象
⏱ 2024-01-19 21:26:24 ^41787784-69-893-933
📌 安全代理,用来控制真实对象访问时的权限
⏱ 2024-01-19 21:26:53 ^41787784-69-1184-1203
📌 智能指引,是指当调用真实的对象时,代理处理另外一些事
⏱ 2024-01-19 21:27:01 ^41787784-69-1239-1265
8.4 简单工厂 vs. 工厂方法
📌 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖
⏱ 2024-01-20 08:22:07 ^41787784-74-693-760
📌 工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类
⏱ 2024-01-20 08:22:36 ^41787784-74-1129-1201
📌 工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。你想要加功能,本来是改工厂类的,而现在是修改客户端!
⏱ 2024-01-20 08:23:41 ^41787784-74-2078-2186
8.5 雷锋工厂
📌 工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。但缺点是由于每加一个产品,就需要加一个产品工厂的类,增加了额外的开发量
⏱ 2024-01-20 08:25:49 ^41787784-75-3742-3838
9.3 原型模式
📌 原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
⏱ 2024-01-20 09:00:21 ^41787784-78-515-566
9.4 简历的原型实现
📌。一般在初始化的信息不发生变化的情况下,克隆是最好的办法。这既隐藏了对象创建的细节,又对性能是大大的提高
⏱ 2024-01-20 14:37:16 ^41787784-79-1517-1579
📌 不用重新初始化对象,而是动态地获得对象运行时的状态
⏱ 2024-01-20 14:37:50 ^41787784-79-1670-1695
读书笔记
第 4 章 考研求职两不误——开放 - 封闭原则
划线评论
📌 在软件设计模式中,这种不能修改,但可以扩展的思想也是最重要的一种设计原则,它就是开放 - 封闭原则(The Open-Closeed Principle,简称 OCP)或叫开 - 闭原则。^280435523-7Olfz8Zwx
- 💭 对扩展开放,对修改关闭
- ⏱ 2024-01-19 20:48:55