这篇文章在一定程度上是对前面几篇文章的一个总结。
一个成功的通用框架必须是为广大具有不同的需求、技能和背景的开发人员而设计的。框架设计师面临的最大挑战是为这些多样化的用户群提供即简单又功能强大的框架。
- 要设计即功能强大又易于使用的框架。
80/20原则。 要把精力集中在框架中使用最为频繁的部分(20%)
- 要明确地为具有不同编程风格、需求、技能以及使用不同编程语言的开发人员设计框架。
- 要了解哪些使用多语言框架的广大开发人员。
我们往往会只为自己设计API,而没有清楚地考虑用户的真正需求。
渐进框架
针对不同的使用场景,为不同的开发团体提供不同的产品,这种多框架的方法在某种程度上说是成功的,比如MS有Visual Basic程序库,有Win32程序库,也有MFC和ATL,但它也存在严重的缺点:多框架使得使用某个框架的开发人员难以将他们的知识转移到下一个技能等级或使用场景(这通常需要另一个框架)。
- .NET框架所做的是把VB、MFC、ATL、ASP等这些模型统一起来。无论开发人员使用何种编程语言或者选择何种编程模型,可供使用的API始终都是一致的。
一个更好的方法是提供渐进框架(Progresive framework)。 从无到有,慢慢积累知识,并应用到以后更高级的使用场景中去。
- .NET框架就是一个渐进框架。
渐进框架的目标是覆盖广大的开发人员,但并不是所有可能的开发人员。
这也应了没有十全十美这句话:不可能满足每一个开发人员的需求。
框架设计的基本原则:
对用户而言,真正的开发效率来自能够轻易地创造非凡的产品,而并非来自能够轻易地创造垃圾。
- 场景驱动设计原则
- 低门栏原则
- 自说明对象原则
- 分层架构原则