C++编程思想第二版第二卷笔记5——设计模式
2009-04-30 15:58
316 查看
设计的原则是将易变的元素与稳定的元素分开。separate things that change from things that stay the same.
设计模式的目标是把变化封装起来。The goal of design patterns is to encapsulate change.
要着手构思一个设计模式之前,扪心自问:“这里真的需要使用继承吗?使用继承的话有什么好处?”
GoF的23个设计模式分为三类:创建型(creational)、结构型(structural)、行为型(behavioral)。
Fonctor:将fonction包装到类中。
Singleton:只能有一个对象的类。
Command:将函数行为与调用地点分离。
使用代理的四种场合:
1. 远程代理。
2. 虚拟代理。提供“懒惰初始化”,主要用于开销庞大的对象,可以只在需要这样的对象时才构建对象。
3. 保护性代理。用于保护代理对象,避免用户取得完全访问权。
4. Smart reference。在访问代理对象时附加一些行为。引用计数是一个例子:记录一个特定对象被引用的次数,用于应用写时复制(copy-on-write)并防止对象混淆。
Factory和Builder的主要区别是:Builder生成的是一个整体的各个部件,而Factory生成的是不同的整体。
Observer:解决某对象改变状态时,一批对象需要更新的问题。
Multiple dispatching多重分派:解决多重对象相互交互情况下的分派问题,如不同数据类型的加、减、乘、除等运算。
设计模式的目标是把变化封装起来。The goal of design patterns is to encapsulate change.
要着手构思一个设计模式之前,扪心自问:“这里真的需要使用继承吗?使用继承的话有什么好处?”
GoF的23个设计模式分为三类:创建型(creational)、结构型(structural)、行为型(behavioral)。
Fonctor:将fonction包装到类中。
Singleton:只能有一个对象的类。
Command:将函数行为与调用地点分离。
使用代理的四种场合:
1. 远程代理。
2. 虚拟代理。提供“懒惰初始化”,主要用于开销庞大的对象,可以只在需要这样的对象时才构建对象。
3. 保护性代理。用于保护代理对象,避免用户取得完全访问权。
4. Smart reference。在访问代理对象时附加一些行为。引用计数是一个例子:记录一个特定对象被引用的次数,用于应用写时复制(copy-on-write)并防止对象混淆。
Factory和Builder的主要区别是:Builder生成的是一个整体的各个部件,而Factory生成的是不同的整体。
Observer:解决某对象改变状态时,一批对象需要更新的问题。
Multiple dispatching多重分派:解决多重对象相互交互情况下的分派问题,如不同数据类型的加、减、乘、除等运算。
相关文章推荐
- C++编程思想第二版第二卷笔记3——输入输出流
- C++编程思想第二版第二卷读书笔记1——编写健壮的系统
- C++编程思想第二版第二卷笔记4——模板、范型、多继承
- 设计模式解析(第二版)笔记3
- pp看书笔记---设计模式之禅第二版 第一章【单一职责原则】
- pp看书笔记---设计模式之禅第二版 第三章【依赖倒置原则】
- [原创]java WEB学习笔记19:初识MVC 设计模式:查询,删除 练习(理解思想),小结 ,问题
- 设计模式解析(第二版)笔记5 Bridge 桥接模式
- 设计模式解析(第二版)笔记6 Abstract Factory 抽象工厂模式
- 设计模式解析(第二版)笔记7 设计模式的原则与策略
- pp看书笔记---设计模式之禅第二版 第四章【接口隔离原则】
- 【我的Java笔记】Java面向对象思想设计原则及常见设计模式
- OC视频笔记5.4(协议的定义与使用)(代理设计模式)(代理设计模式思想)
- Java编程思想笔记02:组合与继承、final、策略设计模式与适配器模式、内部类、序列化控制(注意事项)
- 设计模式解析(第二版)笔记4 Strategy 策略模式
- 开发思想之感言+设计模式笔记
- pp看书笔记---设计模式之禅第二版 第二章【里氏替换原则】
- 设计模式解析第二版阅读笔记
- 《Java编程思想_ 深入理解java虚拟机_Thinking in java__Effiect java__设计模式》学习笔记7——泛型编程基础
- pp看书笔记---设计模式之禅第二版 第五章【迪米特原则】