专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »软件工程 » 面向对象的程序设计:面向对象设计的新视角 »正文

面向对象的程序设计:面向对象设计的新视角

来源: 发布时间:星期四, 2009年2月12日 浏览:38次 评论:0


Alan Shalloway是Net Objectives创建者和总裁自1981年起为工业界提供面向对象和软件Software开发指导和培训如Attachmate, Avaya, Boeing, IBM, Microsoft, Phillips Medical s, Price Waterhouse Coopers, QWest等Alan研究范围包括:design patterns, Java, C, XML, XP和敏捷软件Software开发书"Design Patterns Explained: A New Perspective _disibledevent=>



  gigix:我认为面向对象设计原则(例如开放-封闭原则)比具体模式更重要是吗?

  shalloway:我同意模式只是种具体解决方案不过XP认为:根本不要管OCP(开放-封闭原则)

  gigix:啊?如果不遵循OCP又如何保证代码质量呢?

  shalloway:你根本不可能写出永不修改代码而这正是OCP目标但是请问问你自己为什么要避免修改代码呢?当然理由会有很多比如说好多代码都很脆弱--如果修改了个地方就会破坏另个地方但是如果你开始就想着降低代码耦合程度那么修改就不会造成副作用你可能又会找出另个理由:如果我修改了代码就必须重新做测试但是如果你预先准备好了自动化测试那么系统测试代价也不会很高昂软件Software开发者中流传着个说法:我们用了大量时间来修复是吗?有多少人这样想?想想你最难问题最难现在想想你用了多少时间来找到代码中?如果代码结构良好你能节约多少时间?如果代码中保持松耦合又能节约多少时间?不管如何说大半时间都不是耗在修复上面修复耗费时间是比较少发现所需时间要多得多

  gigix:同意

  shalloway:在80年代我把编码时间(也就是全部时间10%)用在了我写个系统上那时我编码窍门技巧还很不成熟代码里有很多耦合内聚程度也不好这是次很好体验

  gigix:那么它肯定很难维护

  shalloway:对如果没有强内聚、耦合又紧密、测试又少那么系统确很难维护

  gigix:我还有个问题在OOD中哪些原则是最重要

  shalloway:我无法说哪些原则是“最重要”但是我可以列举出些重要原则你应该把对象看成定义良好责任;对象应该对自己负责;封装是某种形式隐藏:隐藏数据、实现或者是类;让事物的间耦合明确化(松耦合);每个思路方法做件事、也只做件事;类只包含相关思路方法;尽量避免冗余

  outmyth:我要如何达到“低耦合”这个目标呢?

  shalloway:“低耦合”意味着要这样定义你接口:让对象正好可以送出服务对象需要所有信息私有数据和私有思路方法可能会有帮助

  crystal_y:抽象、共同点/变化点分析这些是得到松耦合核心吗?

  shalloway:这些东西可以帮助你以种更好方式来看待问题领域如果你这样编程那么要处理东西就少得多了设计接口时候只需要考虑如何表现变化事物的间共同点就行了

  agilemind:粒度适当、松耦合设计模式真正价值是什么您能告诉我吗?

  shalloway:松耦合事物可以发生变化而不引起副作用也不至于造成很多代码修改

敏捷思路方法和XP

  leohoo:敏捷思路方法和XP的间有什么区别您能告诉我吗?

  shalloway:XP是种敏捷过程它有 4种价值:勇气、简单、诚实和交流它有12条实战它是进行敏捷开发种思路方法当然也有其他敏捷思路方法SCRUM就很不错就连RUP你也可以按照敏捷思路方法来使用它敏捷是种思路方法它认为你不可能开始就知道所有需求起码在大多数项目中是这样如果你能够提前知道所有需求那么你就不需要敏捷思路方法

  simaetin:"诚实"?还是"反馈"?

  shalloway:"诚实"是XP种价值"反馈"则是你需要得到东西所有敏捷思路方法都要求尽量听取用户反馈所以你应该少做早期准备工作早期准备越少你就能越快地给用户看些原型产品并得到反馈当然每个人都应该根据自己需要而取舍XP价值就我个人而言我不定会从XP开始我会从这些实战开始:预先准备自动化测试、每天构建、迭代也许SCRUM会更容易实现不过如果你喜欢成对编程--那就去做吧我觉得成对编程很不错但是也有些人不喜欢它这多半是美国人崇尚西部牛仔式个人英雄主义

  flyingsaucer:有人说XP适用于有经验开发者而不适合新手您如何看呢?

  shalloway:我想在XP项目中确需要些高级开发者但是任何没有高级开发者项目都肯定会遇到麻烦如果没有很好编码窍门技巧持续重构也会让人觉得不舒服但是如果使用XP起码你只需要让开发者知道自己要做而另人可以先坐在边学习

其他技术

  flyingsaucer:Shalloway先生您对AOP(Aspect-Oriented-Programming)如何看?它未来发展会如何?

  shalloway:我没有研究过不过些我很尊敬人说它很不错如果有时间我会多学习

  sinba72:您能给我推荐本好UML书吗?我是个UML初学者

  shalloway:Martin FowlerUML Distilled不错

  pplove.shao:您能告诉我些OR映射模式吗?

  shalloway:我没研究过OR映射不过我可以告诉你到哪儿去找这些资料Scott Ambler已经做了很多这方面研究但是还没有完成你可以到www.ronin-l.com去看看另外他也够有名了在Yahoo!上就能搜索到他

  cajan2:您能告诉我如何在实时系统中应用模式吗?

  shalloway:对于实时系统我没有多少经验不过有关这个主题最好书就是SchmidtPattern Oriented Software Architecture Volume 2

  banq:在EJB中有多少设计模式?

  shalloway:有本有关EJB模式好书:EJB Design Patterns可惜据我所知这本书只有英文版本EJB的所以很有用通过EJB我们可以把特定功能放进个对象里面然后再也不必担心对象生存周期、存储的类事情即使不使用EJB这些设计思想也是很重要

告别

  shalloway:有件事我得声明下:我参加今天交流不光是为了宣传我们我有可能到中国来做培训我希望有人能帮助我安排到中国行程如果你能够帮忙请和我联系:[email protected]

  gigix:欢迎来中国

  shalloway:夜已经很深了很高兴今天和大家交流我希望过几个月能再有这样活动再见各位感谢UMLChina主办今天交流感谢所有人参和



  cajan2:Shalloway先生很高兴今天能和您交流再见

注:

  模式矩阵(Pattern Matrix)是Alan Shalloway在Design Patterns Explained中提出种分析、设计思路方法

  XP中价值确是"反馈(feedback)"而非"诚实(honesty)"Shalloway先生可能记忆有误

  用成对编程思路方法初级开发者可以向同组高级开发者学习并尽量作出自己贡献




0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: