设计模式详解-专家如何进行设计
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关系)。当这些关系出现时,用这些词来阅读图表.
设计常常被想成一个合成的过程,一个将事物放在一起的过程,一个合并的过程。按照这具观点,整体是由部分组合在一起的,部分首先出现,然后才是整体的出现。从部分到整体,从我已知的具体事物开始设计,这是很自然的。
这是一个错误的设计过程,从片段开始建设不是一个好的设计方法。
alexander的思想:
设计,从最简单的角度观察问题,然后添加附加的特征,逐渐让设计复杂,因为我们加入了更多的信息。这是一个非常自然的过程,我们随时都在做,比如安排房间:你需要一个大房间,然后再说房间里的摆设,等。。越来越复杂。
alexander的步骤:
识别模式:
识别在你的问题中出现的模式,按照出现的模式来考虑你的问题。记住模式的用途是定义实体之间的关联。
从场景开始:
辨别为其它模式创造场景的模式,这些模式应该是你的出发点。
然后从场景开始向内进行进行设计:
对设计进行精炼:
实现:
一条基于模式的设计途径:
1.为了理解需要实现的目标,从整体的概念性理解开始
2.识别在整体中出现的模式
3.从为其它模式创建场景的模式开始
4.应用这些模式
5.对剩下的模式中中途出现的新的模式, 重复步骤3-5
6.最后 ,每次一个地应用这些模式以创建场景,在这个场景中对设计进行精炼。
只有当你可以根据模式理解整个问题领域时,这种方法才能起作用。不幸的是,并不是任何时候都这样。设计模式给了你起步的方法,然后你必须通过识别问题领域中概念之间的关联来填充剩下的部分。也就是采用共同点/变化点分析(cva),另一种方法是名词动词分析方法。
场景:一些事物存在或者发生的相互关联的状态---一个环境,一个背景。
一个模式经常通过为系统中的其它模式提供场景与其它模式相关联,在你的分析过程中,寻找一个模式与其它模式是否关联,如何关联,寻找这个模式为其它模式创造或者提供的场景。
在我知道我所希望的对象应该是什么之前,我从未考虑过如何实例化我的对象。我首先关注的是对象之间的关联,就好像对象已经存在一样。我为假设在需要的时候,我可以构造出适合这些关联的对象。
原则:考虑你在系统中需要什么,然后再关心如何实现它。当你有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景。
如何考虑应用设计模式? 最简单的方法就是排除法。
一般来说抽象工厂一般是最后使用的模式。最高级的模式约束其它的模式。
如果你不能一下子看出:哪 个模式为其它模式提供场景。那就采用下面的思考方式?
1.有没有一个模式定义另一个模式如何行为的?
2.有没有两个模式彼此之间互相影响?
实现设计的细节:
在设计每个类的具体实现时,要时刻想着相关模式是如何被使用的。比如 BRIDGE模式,这个模式使用抽象部分独立于实现部分,这意味着ABstract部分类及其派生类不包含任何实现信息,实现信息被留在实现类中。
如何读图表?
图表可视地展示了继承(is_a关系)和组合(has_a关系)。当这些关系出现时,用这些词来阅读图表.
相关文章推荐
- 如何独立进行数据库设计详解及基本的知识概念
- 如何高效的进行设计验收?
- Android团队如何进行情感设计
- 互联网架构,如何进行容量设计?
- android如何利用html进行布局设计入门
- 如何成为一个设计专家
- 互联网如何进行容量设计
- 互联网架构,如何进行容量设计?
- 原型设计测试—如何在不同设备中,进行可用性测试
- 如何使用VSS对PB8.0下进行版本控制详解
- 160825、互联网架构,如何进行容量设计?
- Spark Mllib里如何将数值特征字段用StandardScaler进行标准化(图文详解)
- 如何使用ERwin进行基于Mysql的数据库设计
- 如何在jbuilder设计器里进行界面设计?
- VS2008 在进行ASP.NET 开发时 如何避免加载设计页面时假死及减少保存所耗的时间。
- API生命周期第二阶段——设计:如何设计API(基于swagger进行说明)
- 设计之路:如何进行软件需求分析?
- 如何进行软件架构设计?
- 如何进行软件架构设计?
- 如何进行软件架构设计?