.Net Framework本身的研究:
.Net Framework 本身就包含很多值得思考的地方以及许多优良的设计,一个天天使用的 ToString() 就包含了一个设计思想,IFormattable, IFormatProvider 你熟悉么,为什么要这样设计呢?你一次次的拖放Login控件的时候,使用着MemberShip类的时候,有曾想过底层是如何实现的么?
工作中代码的挖掘
举个简单例子,如果今天老板说给网站添加个投票程序,你想“OK,这还不简单了去了。”,花了一个下午的时间做好了。过了两个月,老板又说另一个网站也要添加投票程序。你怎么做呢?把上次的代码复制过去,界面修改下就OK了么?你可以思考着把它做成框架的一部分,比如这样:为了实现UI层的复用,你需要做一个自定义控件。接下来再创建一个类用来支持这个控件,我们管它叫 VoteManager,你很快又想到需要数据持久化,而为了支持 多数据库 甚至 XML,你最好再建一个接口,叫做IVoteProvider,如果使用 Sql Server进行持久化,那么就建一个 SqlVoteProvider类实现 IVoteProvider;如果使用 Xml 进行持久化,那么就建一个 XmlVoteProvider类实现 IVoteProvider;而之前建的 VoteManager 不做持久化的工作,只需要调用 IVoteProvider 接口就可以。最后,你可以再添加自定义配置结点,在配置中设置使用什么Provider,这样构成了一个框架模块的简单雏形。
书籍上范例框架的研究
在 框架设计攻略推荐 一文中,我一共推荐了七本书。其中初级篇和中级篇的三本书都在讲各自的框架。但是这些书籍都有很大的问题:Developing Application Framework那本书中将配置部分与其他的部分紧耦合在一起了,如果你不先搞懂它的配置是如何实现的,其他章节基本没法看,而我们可以做的,就是将这个框架肢解,提取出它单独的部分,研究它的设计理念,然后与大家交流。Windows Framework 那本书有近1/3的篇幅在讲基础知识,我们可以将这部分中跳过,将精华部分提取出来分享,这样可以节省大家不少的时间;而Business Object那本书的学习曲线太过陡峭了,作者应该再写一本书讲解如何使用那个框架,而我们可以进行这项工作(我们一样是不需要针对整个框架,而是框架的某一部分)。
对于范例框架,最重要的一个词就是 肢解,学习框架时最让人恐惧的就是一打开解决方案就被十几个项目数百个文件吓得不知从何入手,我们或许不能很快的完整理解一个框架,但至少可以将某一部分抽象出来,构成一个模块,同时学习它的实际思想。