以后有什么关于设计模式的心得和零散的学习都放在这归纳总结,以备自己温习助记所用,不成体系,没有深度,自娱自乐,严重欢迎拍砖,不欢迎说风凉话的童鞋。
1.关于设计模式分类
这是Gof的分类方式,从面对的具体事物上将模式分为两个大类:
- Class模式:在具体化时需要使用继承(extends)
- Object模式:在实现时除了接口继承(implements)外不需要其他关键字。这个情况比上一种的模式多得多,也说明了在面向对象编程中提倡面向接口编程而不是基于继承。
从动作上,模式被分为三类:
- 创建型模式:关注对象的创建。
- 结构型模式:关注程序的结构化组织方式,属于静态模型模式。
- 行为型模式:关注各个对象在运行时如何交互,属于动态模型模式。
2.关于设计模式和面向对象设计
- 不要关注设计模式之间的关系,知道确实都相互有关联就可以了。
- 关注模式描述的意图、应用场景。
- OOP和OOD不可混为一谈,敏捷开发是设计和编码并行的,设计模式是面向对象程序员将最初设计转化为代码时所采用的典型的实现细节。
- 基于过程的编程,中心是数据,关注的是数据流。共享数据在子程序之间建立了耦合关系(不该有的依赖)。
- 基于对象的编程,中心是事物,关注的是相互协作的代理。对象不会把数据给其他对象,对象是一组能力。
- 面向对象设计的要旨就是在于将那些可能会发生变化的东西封装,以便程序中一个部分发生变化不会根本影响其他的部分。
3.关于实际开发
- 软件部署的成本是IT部门预算最大的组成部分之一。
4.技巧
- 尽量不使用setter和getter:进行粗粒度的封装。(如果你必须在对象之间传递信息的话,可以将信息封装在其他对象中,方法返回的对象用该对象所实现的接口最好。)
Money a,b,c;
a.SetValue(a.SetValue() + b.SetValue());
转换为:
a.increaseBy(b);