這篇文章在一定程度上是對(duì)前面幾篇文章的一個(gè)總結(jié)。

一個(gè)成功的通用框架必須是為廣大具有不同的需求、技能和背景的開發(fā)人員而設(shè)計(jì)的??蚣茉O(shè)計(jì)師面臨的最大挑戰(zhàn)是為這些多樣化的用戶群提供即簡(jiǎn)單又功能強(qiáng)大的框架。

  • 要設(shè)計(jì)即功能強(qiáng)大又易于使用的框架。
    80/20原則。 要把精力集中在框架中使用最為頻繁的部分(20%)
  • 要明確地為具有不同編程風(fēng)格、需求、技能以及使用不同編程語言的開發(fā)人員設(shè)計(jì)框架。
  • 要了解哪些使用多語言框架的廣大開發(fā)人員。
    我們往往會(huì)只為自己設(shè)計(jì)API,而沒有清楚地考慮用戶的真正需求。

漸進(jìn)框架

針對(duì)不同的使用場(chǎng)景,為不同的開發(fā)團(tuán)體提供不同的產(chǎn)品,這種多框架的方法在某種程度上說是成功的,比如MS有Visual Basic程序庫,有Win32程序庫,也有MFC和ATL,但它也存在嚴(yán)重的缺點(diǎn):多框架使得使用某個(gè)框架的開發(fā)人員難以將他們的知識(shí)轉(zhuǎn)移到下一個(gè)技能等級(jí)或使用場(chǎng)景(這通常需要另一個(gè)框架)。

  • .NET框架所做的是把VB、MFC、ATL、ASP等這些模型統(tǒng)一起來。無論開發(fā)人員使用何種編程語言或者選擇何種編程模型,可供使用的API始終都是一致的。
    一個(gè)更好的方法是提供漸進(jìn)框架(Progresive framework)。  從無到有,慢慢積累知識(shí),并應(yīng)用到以后更高級(jí)的使用場(chǎng)景中去。
  • .NET框架就是一個(gè)漸進(jìn)框架。
    漸進(jìn)框架的目標(biāo)是覆蓋廣大的開發(fā)人員,但并不是所有可能的開發(fā)人員。
    這也應(yīng)了沒有十全十美這句話:不可能滿足每一個(gè)開發(fā)人員的需求。

框架設(shè)計(jì)的基本原則:

對(duì)用戶而言,真正的開發(fā)效率來自能夠輕易地創(chuàng)造非凡的產(chǎn)品,而并非來自能夠輕易地創(chuàng)造垃圾。

  1. 場(chǎng)景驅(qū)動(dòng)設(shè)計(jì)原則
  2. 低門欄原則
  3. 自說明對(duì)象原則
  4. 分層架構(gòu)原則