设计模式详解-专家如何进行设计
来源:互联网 发布:数据清洗与特征选择 编辑:程序博客网 时间:2024/06/06 06:59
错误的设计过程:
设计常常被想成一个合成的过程,一个将事物放在一起的过程,一个合并的过程。按照这具观点,整体是由部分组合在一起的,部分首先出现,然后才是整体的出现。从部分到整体,从我已知的具体事物开始设计,这是很自然的。
这是一个错误的设计过程,从片段开始建设不是一个好的设计方法。
alexander的思想:
设计,从最简单的角度观察问题,然后添加附加的特征,逐渐让设计复杂,因为我们加入了更多的信息。这是一个非常自然的过程,我们随时都在做,比如安排房间:你需要一个大房间,然后再说房间里的摆设,等。。越来越复杂。
alexander的步骤:
识别模式:
识别在你的问题中出现的模式,按照出现的模式来考虑你的问题。记住模式的用途是定义实体之间的关联。
从场景开始:
辨别为其它模式创造场景的模式,这些模式应该是你的出发点。
然后从场景开始向内进行进行设计:
对设计进行精炼:
实现:
一条基于模式的设计途径:
1.为了理解需要实现的目标,从整体的概念性理解开始
2.识别在整体中出现的模式
3.从为其它模式创建场景的模式开始
4.应用这些模式
5.对剩下的模式中中途出现的新的模式, 重复步骤3-5
6.最后 ,每次一个地应用这些模式以创建场景,在这个场景中对设计进行精炼。
只有当你可以根据模式理解整个问题领域时,这种方法才能起作用。不幸的是,并不是任何时候都这样。设计模式给了你起步的方法,然后你必须通过识别问题领域中概念之间的关联来填充剩下的部分。也就是采用共同点/变化点分析(cva),另一种方法是名词动词分析方法。
场景:一些事物存在或者发生的相互关联的状态---一个环境,一个背景。
一个模式经常通过为系统中的其它模式提供场景与其它模式相关联,在你的分析过程中,寻找一个模式与其它模式是否关联,如何关联,寻找这个模式为其它模式创造或者提供的场景。
在我知道我所希望的对象应该是什么之前,我从未考虑过如何实例化我的对象。我首先关注的是对象之间的关联,就好像对象已经存在一样。我为假设在需要的时候,我可以构造出适合这些关联的对象。
原则:考虑你在系统中需要什么,然后再关心如何实现它。当你有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景。
如何考虑应用设计模式? 最简单的方法就是排除法。
一般来说抽象工厂一般是最后使用的模式。最高级的模式约束其它的模式。
如果你不能一下子看出:哪 个模式为其它模式提供场景。那就采用下面的思考方式?
1.有没有一个模式定义另一个模式如何行为的?
2.有没有两个模式彼此之间互相影响?
实现设计的细节:
在设计每个类的具体实现时,要时刻想着相关模式是如何被使用的。比如 BRIDGE模式,这个模式使用抽象部分独立于实现部分,这意味着ABstract部分类及其派生类不包含任何实现信息,实现信息被留在实现类中。
如何读图表?
图表可视地展示了继承(is_a关系)和组合(has_a关系)。当这些关系出现时,用这些词来阅读图表.
- 设计模式详解-专家如何进行设计
- 如何成为一个设计专家
- 如何进行数据库设计
- 如何进行类设计
- 如何进行类设计
- 如何进行数据库设计
- j2me 如何进行设计?
- 设计模式原则详解
- 设计模式原则详解
- 设计模式原则详解
- 设计模式原则详解
- 设计模式详解-序
- 设计模式详解
- 设计模式原则详解
- 设计模式详解
- 设计模式原则详解
- MVC设计模式详解
- 设计模式原则详解
- 话说顺驰地产陨落对企业快速扩张的反思
- AjaxPro2 的应用
- [转][华为软件编程规范和范例
- C#日期格式化
- 专访《植物大战僵尸》游戏设计George Fan:主要灵感来自《魔兽争霸》
- 设计模式详解-专家如何进行设计
- 一步一学Linux与Windows 共享文件Samba
- Zen-cart 调用Wordpress文章方法
- 《设计模式之禅》样章连载1:原型模式之“个性化电子账单”
- 双机热备份原理及注意事项
- C++中当unsigned和int间的隐式转换
- 不同服务器数据库之间的数据操作
- 原码 补码 反码
- 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统