Thursday, February 1, 2007

Design Pattern---Preface

一直以来都想写一点东西,但是项目一忙起来就没有时间了,这个想法也一直的往后拖。每天面对的都是一堆又一堆的bug,埋头于大量的,琐碎的code之中感觉总也fix不完。每天好像都很忙,几乎没有时间静下来好好的思考,总结一下。偶尔问问自己我究竟在忙什么?学到了什么?又提升了多少?回答似乎有些苍白。
   
项目终于release了,终于有了一段奢侈的大块的时间来好好反思一下了,也算是对自己工作一年来的一点点总结。COMPASS 代码看了也将近一年了,还是感觉很陌生,对她的了解还是无法上升到设计,架构的层面。这样复杂而又灵活的的一个系统,当初如果没有一个宏观的而又思维严密的架构设计是不可能走到今天的。可以说,COMPASS的精髓我们还没有体会到。
  
考虑到以前学习模式时一直苦于没有很多的经验,看的多半是一些toy code, 而模式作为一个开发人员应具备的最基本的素质之一,对其理解没有一定的实际的经验是很难的。好在COMPASS中使用了很多的模式,而且一般也不是简单的套用GoF中的经典模式,而是有所超越,这是学习模式很好的实例。这里先给出已经看出来的一些模式列表,后面再一一说明。当然,COMPASS中的模式肯定不是只有这么一点,还需要不断的学习,发掘

 

Pattern list of COMPASS:

1. Design Pattern in Compass ---Preface

2. Design Pattern in Compass ---OO Principle, Pattern and Design.
  
3. Design Pattern in Compass ---Evolution of Simple Factory, Factory Method and Abstract Simple Factory
   Factory Method
   Abstract Factory

 

4. Design Pattern in Compass ---Factory
   CModuleFactory
   CModuleContainerFacory
   CDBObjDef
   CChild


5. Design Pattern in Compass ---Singleton
    CConnectionFactory
    CConnectionList
    CTempFileNaneFile
    CUlmConfig
    CDesigner

 

6. Design Pattern in Compass ---Builder
   Menu
   ToolBar

 

7. Design Pattern in Compass ---Command
   CPublicFuncCMP
   CSubstFunc
   CIntervalTask
   CADOCommand

 

8. Design Pattern in Compass---Proxy
   CMultiFomatProxy
   CDataBaseAccessItem

 

9. Design Pattern in Compass---Composite
    CDBObjDef
    UI


10. Design Pattern in Compass---Mediator
    CEditKernel

 

11. Design Pattern in Compass---Observer
     Add-In

 

12. Design Pattern in Compass--- Strategy

13. Design Pattern in Compass--- Template Method

14. Design Pattern in Compass---Iterator

15. Design Pattern in Compass---Façade
     CObjectModel

 

16. Design Pattern in Compass---Iterpreter

17. Design Pattern in Compass--- Chain of Responsibility

18. Design Pattern in Compass--- Flyweight
    Folder_*
     Env


19.  … …

 

模式的学习过程


孔子有曰:吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲不逾矩。
  ―――
《论语为政》
孔子自言进道顺序的这段话,道出了他在不同的生命阶段不同的人生体验,然而异中有同,对于模式的学习我们同样也有这样的过程

[十五志于学]:没有太多实践项目的经验,OO的思想也是处于混沌状 态,对模式的了解只是听说过这个词而已,写出的代码也只是局限于能实现功能。面对不断变化的需求,看着支离破碎的代码,欲哭无泪。。。这时,该学学模式了。
[
三十而立]  背熟了经典的23种模式,但也多半只是理论上的理解。能很快的识出别人用了哪些模式,看上去都很美,因此也急于在实践中运用,恨不得写一个hello world都要用上七八中模式。在设计却又困惑于不知道怎么运用模式,何时该用何种模式,何时又不该用。
[
四十而不惑]:有了大量的实践经验,对模式的理解更加深刻了,能熟练的使用各种模式,重要的是理解了模式与模式之间的联系,能综合的运用模式了,但还不能算是有效的运用,设计中容易出现over-design的情况。
[
五十知天命]:终于悟出了OO的真谛,能从OO Design Principle的角度看待各种模式,对模式的使用也趋于理性而娴熟。
[
六十而耳顺,七十而从心所欲不逾矩]:一个优秀的架构师诞生了。。

 

关于pattern的书:
自从95GOF写出模式的经典之作后,市面上各种关于模式的书都接踵而出,网上关于模式的文章也多于牛毛。下面仅列出我看过的几本,网上对于它们的书评都很多,这里我也仅说一点自己的看法,他们都有自己的特点,各有侧重点。当然还有很多很好的,但没看过就不敢乱发一言了。
Design Pattern s:Elements of Reusable Object-Oriented Software   
经典!优点就不多说了,就是过于简洁了一些,初学不太好懂。不过或许正是应为这种简洁才使它成为了经典。罗素曾经说过:"我的雄心壮志是用十句话说出别人用一整本书说的话,说出别人用一整本书没说出来的话。"作者只用了23个词总结了23种常用而又有效的模式,后面很多人写的关于模式的书多半都使对其进一步的解释而已

Design Patterns Explained   
浅显易懂,入门级别的。
Java
与模式    
中国人写的,符合中国人的语言习惯,比较容易懂,也是入门级的,一千多页的砖头,一两天就可看完了,能很快的对各种模式很快就有个大致的印象。
Refactoring to Patterns  
Refactorying 的角度阐述如何一步一步将模式重构出来,看完后就有体会:噢,原来模式是这样被搞出来的

http://projectserver/sites/MSD_DM/CompassPreview/Lists/Tech%20Discussion/DispForm.aspx?ID=23&Source=http%3A%2F%2Fprojectserver%2Fsites%2FMSD%5FDM%2FCompassPreview%2FLists%2FTech%2520Discussion%2FAllItems%2Easpx
Agile Software Development: Principle,Patterns, and Practices     
侧重于从OO principle 的角度讲解各种模式。
Modern C++ Design 
template
与模式的完美结合。属于高级篇了,买来半年多了尝试看了三次都夭折了。
Applying UML and Patterns  
侧重于OO分析与设计中运用UMLPattern.
.NET Patterns:Architecture, Design, and Process
介绍.net平台下开发的一些新的模式,基本上与GOF的模式不同了,很多模式的思想还是挺开眼界的。
Core J2EE Patterns: Best Practices and Design Strategies 
Java
企业应用级的模式,架构师之路上必修课之一。不过一直都没时间看

 

No comments: