框架是什么?
框架是一种软件的组织形式,它描述了软件中的不同元素以及它们可见的外部属性以及不同元素之间的关联。它一般是针对某一种特定的领域进行设计,提供该领域中完整的一套编码解决问题的方案。它是将领域问题进行抽象,得到相对通用的平台。这个平台是领域问题与用户之间的桥梁。有了这个桥梁,用户不需要对领域问题的各个方面都有所了解便能够使用平台提供的接口编码以实现具体的需求。更进一步的描述是它实际上将问题转向了更高的层次,用户不必研究底层的细节,而能够一开始就专注于面向更上层抽象层次的开发。
使用框架的意义
作为平台类的软件包,框架不仅提供给用户一种解决问题的新方案,也让用户能够复用解决领域问题的基础编码。它是项目设计的基础,能够大幅度减少开发的时间,也有利于进行项目管理。更具体的描述请访问——框架的意义。
框架与普通应用程序的区别
框架的平台性质意味着它的设计与常见的应用程序设计存在着很大的区别。常见的应用程序设计一般都是针对具体的需求进行的,按照需求来进行功能划分,实现不同的功能后进行整合以实现整个系统。而框架却能够用来设计出不同需求的应用程序。这并不是说框架不用注意需求,而是说框架面对的需求要比应用程序中的需求更为通用,它面向的是一类需求的集合,而非具体的某个需求。
这里提到的通用可以说是框架设计中让人头疼的一部分内容。可以说很少有能够非常通用的框架,大多数框架也都仅仅能够实现有限的需求而已。不过这个有限的需求一般都能够满足大多数的使用情况,至于少数的情况也许需要修改框架来适配,或者选择其它的框架进行开发。
框架具有相当程度的通用性也反映出框架设计占据着更高的抽象层次,通用本身就依赖于抽象来实现。实际上框架中的每个组件的功能都应该来源于对实际开发中类似功能的抽象。这样设计出来的不同组件类似于不同的工厂方法。这个工厂方法还提供了一套用户进行定制化的策略,让用户对工厂的行为能够进行更小粒度的控制,这样用户便能够使用工厂方法来生产出不同的控件,完成需求。
框架提供的功能也在一定程度上决定了它的复杂度,这意味着用户在前期可能需要投入很多时间到框架的学习中。
框架设计的难点
-
整体架构的一致。
-
可扩展性需要保障
-
复杂度如何控制
-
框架的稳定性如何保障
-
功能的取舍
总结
框架的核心在于优秀的设计,它面向更通用的需求,却也要在不同的需求之间进行平衡。框架的设计者大都对领域问题有更深刻的认识,这样的认识最终会体现在框架设计的各个方面!同时设计者本身对技术的掌控力也在一定程度上决定了框架的质量,并直接影响到框架的实现。