电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

面向对象设计的新视角VIP免费

面向对象设计的新视角_第1页
1/5
面向对象设计的新视角_第2页
2/5
面向对象设计的新视角_第3页
3/5
面向对象设计的新视角--------------------------------------------------------------------------------gigix翻译(转载自ULMChina)AlanShalloway是NetObjectives的创建者和总裁,自1981年起,为工业界提供面向对象和软件开发的指导和培训,如Attachmate,Avaya,Boeing,IBM,Microsoft,PhillipsMedicalSystems,PriceWaterhouseCoopers,QWest等,Alan的研究范围包括:designpatterns,Java,C++,XML,XP和敏捷软件开发。他的书"DesignPatternsExplained:ANewPerspectiveonObject-OrientedDesign"(中译本《设计模式精解》即将发行,由透明(gigix)翻译)被《设计模式》的作者JohnVlissides称为最好的设计模式入门书籍。Alan曾在MIT获得计算机科学硕士学位。以下是交流实录。由gigix翻译。模式矩阵gigix:最近好象你快变成一个XPer了,是不是?最近你最喜欢的方法学是什么?shalloway:SCRUM也有很多精彩的思想。gigix:那你还喜欢模式矩阵吗?shalloway:我正在重新写模式矩阵,我打算再把它扩展一些。gigix:你现在怎么看待模式矩阵呢?使用模式矩阵来做预先设计,这样的方法好吗?shalloway:模式矩阵是学习模式的好工具,我想它的主要优点是能够用来进行模式之间的比较和对比。对模式矩阵的研究仍在进行之中。另外,我认为预先的设计和渐进的设计都是有必要的。当你对问题领域非常熟悉时,你可以在预先的设计中留下扩展的空间。但是,扩展的空间不能留得太多,我们不想实现不需要的东西。另一方面,我很赞赏XP“”中简单的原则。除非需要,否则不要实现任何东西。我的原则是:1、测试优先(并保证测试的自动化);2、切实遵循松耦合、高内聚、无冗余的原则,用代码表明自己的意图。gigix:我觉得模式矩阵和敏捷方法是冲突的,是吗?shalloway:为什么你会这么想呢?gigix:因为它提倡使用模式预先做设计。shalloway:让我来解释一下:也许XP“”的确说过不要预先做任何设计,但是其他敏捷方法通常不会这样。敏捷方法的基础是迭代式开发、每天至少构建一次“经常听取客户的反馈、重视人的价值、自动化测试和及时的重构。不做预先设计”“”和成对编程是XP的实践,但不是所有敏捷方法的实践。我不相信只要使用模式就会造成过分设计。但是,也不要想当然地去使用模式。只有当你看到问题领“域的状况和某个模式完全符合时,才能应用这个模式。我经常听见人们问:我的Strategies”在哪里?这就是误用了模式:当你手上只有锤子时,你就想把所有的问题都当成钉子。模式实际上是事物之间的关联。比如说,Strategy模式就描述了“”可能使用不同规则的事物之间的关联。模式教给我们一种看待问题领域的新视角。设计模式xlp223:你认为新手应该从哪些模式开始学习呢?shalloway:入门的模式:Strategy、AbstractFactory、Composite、Bridge、FactoryMethod、Proxy、Decorator、Observer、Iterator、Adaptor、Facade和TemplateMethod。就算你不用它们做设计,这些模式包含的概念也是开发者需要知道的。gigix:您看了最近JoshuaKerievsky在SDMagazine上发表的文章吗?他认为模式很容易造成过分工程。shalloway:只有当你用错了模式的时候,它们才会造成过分工程。可惜,大半的人都会用错。不过,正如我经常说的--模式是用来描述问题领域中事物的关联的。只要我们不想当然地虚构一些不存在的东西,模式就不会伤害我们。crystal_y→→:大量的领域知识倾向于提前设计可能过分工程,到什么时候算完?“”要知道什么时候该停,我们需要什么呢?经验吗?更多的领域知识吗?更多的计算机科学知识吗?shalloway:在预先做设计的时候,只需要表现出问题领域的概念就可以了,不要操心特定的实现方法。敏捷方法会强迫你这样做,因为它要求你在一定的时间内实现一定数量的功能。crystal_y:领域知识可以帮助我们更好地理解问题,而模式则可以帮助我们理解问题的抽象。敏捷方法则可以帮助我们更快地得到反馈,以改进我们的理解。对吗?shalloway:实际上,模式会从分析、设计和实现的角度来告诉我们问题。比如说,在分析阶段,我可能会发现我有几种不同的文档,需要支持不同的输出设备。所以,我看到系统…...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

面向对象设计的新视角

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部