正在看设计模式解析,希望这本书能对我有帮助
花了2周看完了,以下是学习笔记:
第1章 面向对象泛型
1、 面向对象考虑问题的三个视角:概念、规约、实现。
概念:抽象类(接口),泛指某种类型。
规约:类的成员函数,及其参数表。
实现:成员函数的实现。
2、 封装一般意味着各种隐藏。例如,抽象类隐藏子类的具体类型。
3、 功能分解一般是结构化程序员使用的方法,那我们设计阶段(概要设计、详细设计)的功能分解是否不正确?
4、 对象自己负责自己。个人理解:对象不需要进行某种特殊的初始化,就能正确使用。
5、 P17的主程序,负责协调各个功能对象。
第4章 标准的面向对象解决方案
1、 这章的解决方法和我们的方法惊人的相似:虽然可以在不改变已有系统的情况下添加新功能,但是造成了类爆炸。
第8章 开拓视野
1、 对象是具有责任的一个实体。
但是我不清楚如何“划分”对象,比如划分成校验类、下发类、解析类、数据库类,这些似乎也能被看成一个个有责任的实体。但是“直觉”告诉我,这样似乎不对,也许压根就不应该做划分。
2、 封装应该被视为“任何形式的隐藏”,包括:
1)实现细节
2)派生类
3)设计细节
4)实例化规则
3、 将封装看成是通过抽象类或者接口隐藏类。
4、 共通的概念将用抽象类表示。可比性分析所发现的变化将通过具体类(也就是从抽象类派生而来的具有特定实现的类)实现。
5、 在创建对象时使用共性和可变性分析更好。
第9章 Strategy模式
1、 假设变化将会出现,并尝试预测其出现的位置。
2、 考虑设计中什么应该是可变的。它不是考虑什么会迫使设计发生改变,而是考虑什么能够在不引起重新设计的前提下改变。
第10章 Bridge模式
1、 用对象的职责而不是其结构来思考问题。
2、 “为每种变化使用不同的特化”(继承)到“将变化转移到使用或拥有这种变化的对象中”(组合)的转变。
第13章 用模式结局CAD/CAM问题
1、 用模式思考的过程。
1)找出模式。
2)分析和应用模式。
2a、按背景的创造顺序将模式排序。
原则:先考虑系统中需要什么,然后再去关注如何创建它们,即工厂模式是最后要考虑的
2b、选择模式并扩展设计。
2c、找到其他模式。
2d、重复。
3)添加细节。
第15章 共性与可变性分析
1、 开发人员需要一种方式,首先弄清有些什么东西,然后再尝试找到它们之间的关系。
第16章 分析矩阵
1、 用行发现规则。
用列发现特定情况。
2、 关于客户:
他们会谈的非常具体;它们经常用“总是”表达“通常”,用“从不”表达“很少”。
第17章 Decorator模式
1、 用工厂来生产有特定装饰的对象。
第18章 Observer模式
1、 如果一个要成为观察者的类已经存在,则可以使用Adapter模式进行转换:
第21章 Singleton模式和Double-Checked Locking模式
1、 在多线程应用程序中,Singleton对象通常必须是线程安全的,有状态Singleton应该谨慎使用(看看那个SFACTORY的实现)。
第24章 工厂模式的总结
1、 创建和使用对象的三个主要任务:
1)根据所履行的责任找出对象。
2)决定如何使用这些对象。
3)决定如何管理这些对象。
2、 对于系统中的任意两个实体A和B,应该将它们之间关系限制为A使用B,或者A创建/管理B。
第25章 设计模式回顾:总结与新起点
1、 这个模式隐藏了什么实现?这样我们就可以修改它。
2、 它如何将问题域分解为多个责任。(解析、下发、DB?)