CSDN博客

img winterld

一年前写的对模式的体会

发表于2004/10/11 17:16:00  1166人阅读

分类: 设计模式

当时去听了一个有关设计模式的讲座,一些心得体会在此与大家分享。

讲座首先从面向对象的基本原理开始,设计模式是提供若干种已有的面向对象开发的解决方案,
所以要真正理解并运用好设计模式必须首先理解面向对象的特性,也就是:
1.封装
  封装分为一级封装和二级封装,
  一级封装,类似C语言中的库函数将一些算法或常用的功能进行以便于重用;
  二级封装,利用面向对象的特性将功能封装成组件以便于重用。
  这里提倡的是二级封装,也就是运用设计模式所提供的解决方案进行封装以达到组件级重用。
2.继承
  继承是传统的面向对象中的重用手段,但继承的特点是具有层次关系并且是高耦合的,所以
  这些特点违背了高聚合低耦合的设计原则,难以重用。
  所以提倡利用类的组合而不是继承来完成功能,从所有的设计模式的类图中也都能看到类图中
  最多有两到三个层次,而且在高层的一般是接口。
3.多态
  多态也叫做动态绑定,也就是在编译时不知道具体的采用什么实例,而在运行时才知道。
  要完成多态必须利用接口或抽象类,这也就是面向对象编程的核心思想:面向接口编程。
  在此还提到了另外一点就是接口和抽象类的区别:
  从设计的角度来看,接口是面对客户(可能是最终客户也有可能是另外的子系统)的,
  也就是说接口是开发者与客户之间的一种契约,而抽象类是在系统内部实现时完成功能所
  进行的抽象,实现对外的接口并且可以给内部的实现类提供缺省的实现方法。
  从JAVA编程语言来看,一个实现类可以实现多个接口,而只能继承一个抽象类(受限于JAVA
  的单继承模型),另外抽象类可以提供部分实现方法,而接口则不能有任何方法的实现。
  对此应尽量从设计角度去理解而不要单纯的去看某一种编程语言(象C++就没有interface
  关键字,但这并不影响C++实现多态)。
4.抽象
  在面向对象的思想中所有的一切都可以是对象,所以适当的进行抽象也是面向对象的重要思想。
  有一些对象是对应到现实世界中某一具体事物,此时比较好理解,但有些时候是比较抽象的
  不好理解的,比如:系统当前的状态,系统的一个指令,其实这些也是对象。就像设计模式中
  提到的State、Command模式。

由于篇幅的关系我这里就不再讲具体的模式了,理解和运用设计模式需要注意以下几点:
1.真正理解面向对象特性;
2.熟记每个设计模式,达到别人一提某个模式的名字,就立刻在头脑中反应出该模式的类图;
3.尽可能多运用已掌握的设计模式,这样慢慢在实践中领悟每一种模式的精髓。
4.模式是提供现有的解决方案是在设计时使用的,也就是说不要从代码实现上去看模式。
  也就是说要从上到下(从设计到编码)去做。
  另外,在极限编程(XP)中也有一种提法叫做重构(Refactor),重构恰恰是相反的,
  是从下到上的去整理的你的代码。有兴趣可以参考6

下面列出一些学习模式的参考书籍:
1.《设计模式:可复用面向对象软件的基础》
  《Design Patterns:Elements of Reusable Object-Oriented software》
  作者:GOF
  读书建议:这本书比较难理解,不适合初学者,最后对设计模式有一定了解后再用这本书做总结。
2.《Thinking in Pattern with java》
  作者:Bruce Eckel
  比较好的入门书籍,缺点是只有实例代码没有类图,可以自己画。
3.《Applying UML and Patterns》
4.《Design Patterns Explained》
  这两本书都从设计的角度去看模式,应该在有一定的基础后用此书作为融会贯通。
5.《Anti Patterns》
  从不同的角度去看模式。
6.《Refactoring》

阅读全文
0 0

相关文章推荐

img
取 消
img