关于设计模式

整篇文章在开头提出以下三个问题:

  1. 问题一:你真的了解面向对象吗?
  2. 问题二:你准确的知道什么是模式吗?
  3. 问题三:你知道如何使用设计模式吗?

这里也放在最前面用于思考。


什么是设计模式?

模式是针对特定场景下的特定问题的可复用、可表达的解决方案。

面向模式设计是从分析到实现的设计模式,基于模式的分析使你成为一个更有力、更高效的分析者,因为它们让你更抽象的处理你的模型;其帮助人们学习面向对象的原则,帮助解释“为什么我们要这样处理这些对象” 使用模式的观念:如何使用模式来理解问题(概念)领域,而不仅仅在理解问题领域后使用模式来完成一个设计。

程序设计的错误思路:先创建问题领域中的类,然后将这些类缝合起来组成最终的系统。 


为什么要使用设计模式?

研究使用设计模式和面对对象编程的最本质原因是:需求中存在变化的部分。

根本目的是:更好的复用我们的代码解决实际需求中的问题,OO达到可复用、可扩展、易维护的目的。

先学习两个概念,所有程序设计中都要求的基本原则之一:高内聚,低耦合。

  • 内聚度:程序内操作之间的联系紧密的程度,描述一个子程序内部成分之间相互联系的强度
  • 耦合度:程序之间的联系紧密的程度,描述一个程序与其他程序之间的相互联系的强度

使用功能分解的方式设计程序,变化的需求分让我们的程序和维护成本大大增加(因为一个函数或数据结构的变化会影响其他的函数和数据,于是受影响的部分也得修改,这种滚雪球似的使bug增加)  


面向对象设计的要点?

好的调度或控制程序关注能做什么,不关心怎样去做,将职责分配下去 对象是一个拥有行为动作和自我状态的东西 对象的好处:可以定义自己负责的东西。 好的设计原则:对象对自己负责,并且这种责任应该被明确的定义出来 观察对象的视角:

  • 概念视角:抽象建模
  • 规格视角:有哪些能力
  • 实现视角:怎样实现

封装带来的优势:

  • 让对象为自己的行为负更多的责任,控制程序负担的责任就越少
  • 封装让一个对象内部状态和行为的变化对对象调用者透明
  • 封装帮助我们避免因需求变化带来的bug的影响

 

模式之间的关系?

一般来书,要构建一个系统,你需要将很多模式结合起来使用。不同的设计者可能会使用不同的模式来解决同一个问题。通常:

  • 很多模式通常可以很好的相互结合
  • 一个模式可能会依赖与另一个
  • 一些模式是类似的,都是可选的
  • 模式是易于发现和描述的
  • 模式不是方法或框架
  • 模式为你提供解决问题的高效方案

     

posted @ 2012-02-02 10:25  残夜  阅读(622)  评论(0)    收藏  举报