关于通用软件框架

术语框架在软件工程中被定义为从相同类型的应用中挖掘出的可复用的体系结构。问题是,相同类型的应用这一限定范围在面对现实世界时往往表现出超出原定预期的多样性。虽然仍然可称作相同类型,但新的应用很容易便在不经意间提出某种超越已有框架能力的需求。一旦出现这种情况,用户通常便踏入了修改扩展旧有框架的泥潭。他们很快发现,即使拥有原框架的源代码,新功能也很难被融洽的添入到框架中。旧有的结构很容易就被修改得面目全非,最终导致整个框架的推倒重来。
 
如果你曾经经历这样的窘境,那么你的第一反应很可能是抱怨框架设计者在通用性上的考虑欠周。然而,既然框架被定义为相同类型应用的归纳,那么它就不可避免地包含有领域相关的细节。一旦你的需求超越了这些细节所定义的结构,这个框架自然有可能在你的压力下出现雪崩。
 
除非,这个框架包含的层面足够广阔,即使在特定的应用层不符合你的要求时,其更低层次的结构仍能使你获得使用上的便利。这样一个理想化的大框架形如下图:
  
 


分层的框架设计
 
 
图形最底端是最为通用的框架层。这个层次不包含任何领域细节,理论上应适合于所有的应用。稍上一层的框架包含有一定的领域相关细节,但这个领域的限定范围足够大,因此该层次仍适用于大部分应用。随着层次向上攀升,领域相关的细节越来越多,相应的层次也就越来越局限于特定的应用范围。最顶层是极其专业化的框架层。也可以认为,最顶层便是某个特定的应用。即使是同一个应用,也存在变化的空间,因此从这个意义上来看,应用和框架并没有明确的界限。
 
遗憾的是,大量的软件框架并非遵循这样的结构完成。通常的情形是,极度专业化的框架的开发者同时也在开发属于通用框架的内容。并且,两者混杂在一起,缺乏明确界定。这样的框架即使由最优秀的程序员来完成,也必然徒劳无功。
 
在确定了软件框架层次观之后,你也许立刻就对最底端的通用框架产生了兴趣。毫无疑问,开发一个理论上能适用于所有应用的软件框架对任何一个编程者来说都具有莫大的吸引力。简单设想一下,这样一个软件框架的开发必定具有极大的挑战性。
 
不过,如果从另一个角度来考虑,通用软件框架的开发未必是件太难的事。因为,既然这个层次不具备任何领域相关的细节,那么它必然极其的简洁。我们所要做的只是抓住它背后潜在的规律,然后一切便如顺水推舟般容易。这就好像是爱因斯坦的那个了不起的公式E=mc 2所揭示出的:上帝喜欢简洁。
具体如何开发,请参考BOS。BOS的源码下载地址: http://sourceforge.net/projects/bos-code
 
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

许的啊,如果您想找到原因,原来uPattern中对于合成模式的实现使用的是原始的透明方式…… 一个人的力量太有限了,一个人的才智也太有限了,如果这个小生命在我一个人的手里,也许会因为得不到充足的阳光雨露而不能茁壮成长,但是如果有您的加入,多了您的呵护,相信我们的目标才更有可能实现。 如果您是高手,那么就在这里表现您的聪明才智吧。如果您是菜鸟,来这里汲取知识吧。所有的源代码都永久性公开,如果您有什么地方不清楚或者是有更好的建议,您也可以直接联系我。 ―――――――――――――――――――――――――――――――――― 这是一个应用程序框架,现在已经完成部分框架代码与用户管理、权限管理与日志管理模块。如果您有任何的问题或者是建议可以发邮件到我的邮箱,您可以使用本源代码在您的任何应用之中(包括商业应用)。如果您想要和我们一起来发展壮大这份源代码,请您发邮件给我(Camel_163@163.com),或者是在下面留言。 ――――――――――――――――――――――――――――――――――     uClasses------------------------------在这里定义应用程序中的基础类     uPattern------------------------------几个模式的DELPHI实现或者定义     uAppUtils-----------------------------应用程序工具单元     uAppSet-------------------------------应用程序设置接口声明单元     uAppSetIniFile------------------------应用程序设置IniFile实现单元     uException----------------------------异常统一处理单元     uAppFactory---------------------------应用程序工厂,本工厂生产出来的就是一个一般的应用程序     uAuthAppFactory-----------------------应用程序工厂,本工厂生产出来的就是拥有权限管理、日志及用户管理的程序     ufrmAppBase---------------------------窗口基类     ufrmAppDlgBase------------------------对话框窗口基类    用户、权限与日志管理单元     Role----------------------------------权限与用户管理主要的实现单元     Log-----------------------------------日志管理单元     ufrmRoleManager-----------------------权限管理主用户界面     ufrmLogin-----------------------------用户登录界面     ufrmChangePassword--------------------更改用户密码     ufrmLog-------------------------------日志查看界面     CommandRegister-----------------------模块注册中心
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值