Design Patterns

  最近读了三本关于设计模式的书:

    号称软件工程四大名著之一的GOF的《Design Patterns》

    厚得跟砖头一样但是又厚得很有意思很有诚意的《JAVA与模式》

    拥有它就等于拥有一个Expert Group在你身边的《J2EE核心模式》


  看的前两本书讲的模式应该归类为设计模式,而后一本讲的应该归类为架构模式,列举的大多是平时了解也用过的设计模式,但是也有很多看不明白的,看来是开发的经历还不够,等以后有时间再回头看看吧。看着大师们的总结,平时很多用到的东西都得到了印证,再看看现在很多的开源项目,像是Struct2中的拦截器,Spring中的IOC,AOP等等,都是对设计模式很好的应用,好的设计模式确实能让我们的代码精练而有力量,能让我们的代码写得更优雅,它不光是保证我们软件质量的工具,它甚至也是一门艺术,对于Programmer来说。


  我们之所以需要好的设计,是因为面向对象的开发很复杂,面向对象的开发之所以复杂,是因为人们想要用语言来描述整个完整真实的世界,但是世界是何等的复杂,所以有人就说面向对象的出现本身就是一个错误,因为真实世界中的很多情况是难以描述的,因此,我们就更需要好的设计才能帮助我们对对象进行更好的封装,更好的去确定对象的粒度,定义对象的继承层次,依赖关系,从而降低软件模块间的耦合,提高软件的灵活性,性能和重用性,避免重新发明轮子。


  设计模式其实都是对重复性和可变性的封装,只有做好这个才能提高重用性和响应变化,从很多经典的原则就可以看出来,像是开闭原则(OCP):就是要让模块在不被修改的情况下被拓展。还有里氏替换原则(LSP):即在使用父类的地方可以使用任何一个子类去替换,以及迪米特法则等等一些法则,都是对软件设计的一种很好的总结,其实现有的设计模式固然有很多,但是我认为面对这些设计模式,其实完全可以忘掉具体的用法,因为不同的情况是应该有不同的设计的,学习它们的思想才是最重要的,书中很多的设计模式语法上其实都是差不多的,但是应用的场合可能就大相径庭,比如Adapter和Bridge,还有Command和Decorator,使用的语言特性和用法都是差不多的,用到的场合却不一样。


  最后Mark一下软件设计方面还想要读的书:

    Martin Fowler的《重构》和《企业应用架构模式》,Kent Beck的《解析极限编程-拥抱变化》、William J.Brown的《反模式》,还有和Robert的《敏捷软件开发》


posted on 2010-12-31 23:07  这位同学  阅读(203)  评论(0编辑  收藏  举报

导航