您的位置:首页 > 其它

设计模式详解-专家如何进行设计

2010-03-11 08:50 363 查看
错误的设计过程:

设计常常被想成一个合成的过程,一个将事物放在一起的过程,一个合并的过程。按照这具观点,整体是由部分组合在一起的,部分首先出现,然后才是整体的出现。从部分到整体,从我已知的具体事物开始设计,这是很自然的。

这是一个错误的设计过程,从片段开始建设不是一个好的设计方法。

alexander的思想:

设计,从最简单的角度观察问题,然后添加附加的特征,逐渐让设计复杂,因为我们加入了更多的信息。这是一个非常自然的过程,我们随时都在做,比如安排房间:你需要一个大房间,然后再说房间里的摆设,等。。越来越复杂。

alexander的步骤:

识别模式:

识别在你的问题中出现的模式,按照出现的模式来考虑你的问题。记住模式的用途是定义实体之间的关联。

从场景开始:

辨别为其它模式创造场景的模式,这些模式应该是你的出发点。

然后从场景开始向内进行进行设计:

对设计进行精炼:

实现:

一条基于模式的设计途径:

1.为了理解需要实现的目标,从整体的概念性理解开始

2.识别在整体中出现的模式

3.从为其它模式创建场景的模式开始

4.应用这些模式

5.对剩下的模式中中途出现的新的模式, 重复步骤3-5

6.最后 ,每次一个地应用这些模式以创建场景,在这个场景中对设计进行精炼。

只有当你可以根据模式理解整个问题领域时,这种方法才能起作用。不幸的是,并不是任何时候都这样。设计模式给了你起步的方法,然后你必须通过识别问题领域中概念之间的关联来填充剩下的部分。也就是采用共同点/变化点分析(cva),另一种方法是名词动词分析方法。

场景:一些事物存在或者发生的相互关联的状态---一个环境,一个背景。

一个模式经常通过为系统中的其它模式提供场景与其它模式相关联,在你的分析过程中,寻找一个模式与其它模式是否关联,如何关联,寻找这个模式为其它模式创造或者提供的场景。

在我知道我所希望的对象应该是什么之前,我从未考虑过如何实例化我的对象。我首先关注的是对象之间的关联,就好像对象已经存在一样。我为假设在需要的时候,我可以构造出适合这些关联的对象。

原则:考虑你在系统中需要什么,然后再关心如何实现它。当你有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景。

如何考虑应用设计模式? 最简单的方法就是排除法。

一般来说抽象工厂一般是最后使用的模式。最高级的模式约束其它的模式。

如果你不能一下子看出:哪 个模式为其它模式提供场景。那就采用下面的思考方式?

1.有没有一个模式定义另一个模式如何行为的?

2.有没有两个模式彼此之间互相影响?

实现设计的细节:

在设计每个类的具体实现时,要时刻想着相关模式是如何被使用的。比如 BRIDGE模式,这个模式使用抽象部分独立于实现部分,这意味着ABstract部分类及其派生类不包含任何实现信息,实现信息被留在实现类中。

如何读图表?

图表可视地展示了继承(is_a关系)和组合(has_a关系)。当这些关系出现时,用这些词来阅读图表.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: