设计模式怎么解决设计问题
2014-06-16 09:43
288 查看
1.寻找合适的对象,如何将现实世界种的对象抽象出来,或者找出现实世界中不存在的对象,这步将直接导致后面设计的好坏。因为如果不能找到合适的对象,那么你的设计又将在哪里呢?
2.决定对象的粒度
尽量将粒度细化到最小,比如你认为4个轮子的是汽车,那如果出现了8个轮子的汽车那将怎么办呢?
3.将对象通用的操作定义为接口,比如麻雀和大雁可以定义出鸟类接口,而且都有飞的操作。
4.描述对象的实现
即你怎么去拿到你想要的对象,不管用什么手段和方法。
5.设计应支持变化
1) 通过显式地指定一个类来创建对象在创建对象
2) 对特殊操作的依赖
3) 对硬件和软件平台的依赖
4) 对对象表示或实现的依赖
5) 算法依赖
6) 紧耦合
7) 通过生成子类来扩充功能
8) 不能方便地对类进行修改
可复用面向对象编程原则:
1.针对接口编程,而不是针对实现编程
当你不得不去拿到具体的实现时,已经有一些设计模式帮你解决这个问题,比如abstract factory,builder等等
2.优先使用对象组合,而不是类继承
2、1当你使用子类的时候,必然会依赖于父类,当父类变更的时候,必然影响到子类
组合要求对象遵守彼
此的接口约定,进而要求更仔细地定义接口,而这些接口并不妨碍你将一个对象和其他对象
一起使用。
2.2对象组合对系统设计还有另一个作用,即优先使用对象组合有助于你保持每个类被封装,
并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控
制的庞然大物。另一方面,基于对象组合的设计会有更多的对象(而有较少的类),且系统的行
为将依赖于对象间的关系而不是被定义在某个类中。
理想的情况下,我们可以利用组合获取所有想要的组件。
2.3委托是对象组合的特例。它告诉你对象组合作为一个代码复用机制可以替代继承。
2.决定对象的粒度
尽量将粒度细化到最小,比如你认为4个轮子的是汽车,那如果出现了8个轮子的汽车那将怎么办呢?
3.将对象通用的操作定义为接口,比如麻雀和大雁可以定义出鸟类接口,而且都有飞的操作。
4.描述对象的实现
即你怎么去拿到你想要的对象,不管用什么手段和方法。
5.设计应支持变化
1) 通过显式地指定一个类来创建对象在创建对象
2) 对特殊操作的依赖
3) 对硬件和软件平台的依赖
4) 对对象表示或实现的依赖
5) 算法依赖
6) 紧耦合
7) 通过生成子类来扩充功能
8) 不能方便地对类进行修改
可复用面向对象编程原则:
1.针对接口编程,而不是针对实现编程
当你不得不去拿到具体的实现时,已经有一些设计模式帮你解决这个问题,比如abstract factory,builder等等
2.优先使用对象组合,而不是类继承
2、1当你使用子类的时候,必然会依赖于父类,当父类变更的时候,必然影响到子类
组合要求对象遵守彼
此的接口约定,进而要求更仔细地定义接口,而这些接口并不妨碍你将一个对象和其他对象
一起使用。
2.2对象组合对系统设计还有另一个作用,即优先使用对象组合有助于你保持每个类被封装,
并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控
制的庞然大物。另一方面,基于对象组合的设计会有更多的对象(而有较少的类),且系统的行
为将依赖于对象间的关系而不是被定义在某个类中。
理想的情况下,我们可以利用组合获取所有想要的组件。
2.3委托是对象组合的特例。它告诉你对象组合作为一个代码复用机制可以替代继承。
相关文章推荐
- 学习设计模式的层次及设计模式怎么解决设计问题
- 设计模式解决的问题
- 《设计模式》学习笔记——设计模式怎样解决设计问题
- 尝试用AOP解决OOP和设计模式问题(1)
- 尝试用AOP解决OOP和设计模式问题(2)
- 学习笔记-设计模式GRASP和GoF是怎样解决不同情况的耦合问题
- 设计模式GRASP和GoF是怎样解决耦合的问题
- 设计模式怎样解决设计问题[笔记]
- 解决Eclipse再次打开工程时找不到Design设计模式的问题!...
- 设计模式的实际应用——在C#中解决单客户端窗口数据并发问题(2010-08-04)
- 用Factory设计模式解决一个网友的问题
- 使用策略设计模式,反射,解决商城系统中的商品折扣问题
- 转载23种设计模式之单例模式(线程问题解决)
- 设计模式能够解决的问题
- Tip:解决DesignMode不能正确反应是否处于设计模式的问题
- 设计模式学习1—使用单件模式解决对象重复申请问题
- 解决VS2008切换设计模式卡死问题
- 设计模式学习之三装饰者模式(Decorator)——解决星巴兹扩张快的问题
- 解决单例设计模式中懒汉式线程安全问题
- 设计模式解决的问题