BOS设计缘由(三)

原创 2007年09月29日 21:28:00
1.4    问题4和通用软件框架
 
到目前为止我们已经通过组件技术和一个组件管理器来为例程1-1大幅提升了复用性,并且这种复用性还可以在运行期体现出来。遵循这种方式,任何程序的绝大部分代码都可以被剥离为组件,从而使项目呈现出更佳的可复用结构。你也许想立即宣布我们已经发现了软件设计的诀窍—以组件和组件管理器作为基础的通用解决方案。但是,别忘了我们还有问题列表中的第4项。这最后一个问题告诉我们,即使我们把99%的程序代码都转移到组件中,我们也还必须要在main函数中创建一些初始的组件实例,并为它们赋予恰当的属性值,进而正确启动程序。
 
启动程序所需的这些初始值需要经过微调,因而在实际项目中它们会不时改变。每次改变任何一个初始值,我们都必须重新编译链接包含main函数的Program类。一次编译链接花费的时间也许不长,但记住重编译终归不是一个好选择。何况也许最终用户也想对启动初始值进行微调—他们可没法完成重编译这样的高难度动作。
 
解决方法同样并不复杂。基本上这就是一个魔术常量的问题,因此把它们移到一个外部配置文件中即可。通过改变这个配置文件,最终用户和我们都可以轻松的定制程序启动参数。
 
从某种意义上来说,程序启动时实例化哪些组件也是一种初始化参数。这些信息也可以被写到外部配置数据之中。如此一来,主程序只剩下极少一部分代码,并且是一段公式化的通用性代码。这可以给我们一些设计上的灵感:不妨将主程序提炼为一个通用性设施,而将应用相关的逻辑和数据剥离开来—应用逻辑被剥离到不同的组件,应用启动时初始化数据则转移到配置文件之中。如此一来,我们将获得一种与以往截然不同但具备高度复用性的设计结构。这种结构的最直观表现是:应用完全由组件构成。
 
这种设计结构正是BOS想要传达的东西。它所给于我们的好处就在于:软件从此实现了完全的组件化;主程序和exe只是作为通用的进程启动器而存在;初始化数据被完全剥离到独立的配置文件,从而可以单独配置并杜绝魔术常量的错误。闭上眼睛,你可以很清晰的想像一幅积木式的软件结构图—这是一幅充满美感的结构化艺术图。
 
1.5 小结
 
本文向你展示一个充斥日常生活的平凡程序如何被提炼为一个具备高度复用性的软件结构。最终的结果正是帖子中讨论的话题—BOS
 
但本文不是严格的技术讨论。诸如组件标识、配置数据格式这些细节在本章并没有详细讨论。本文的目的在于指明BOS的设计意图,让你对欲解决的问题以及如何解决这些问题有一个宏观的认识。更详细的设计之旅则会在稍后的文章中展开(如果需要的话:-)
 
BOS的设计意图是建立一个适用于绝大多数应用的通用软件结构。总的来说,BOS兼具组件系统和软件框架两种意义。BOS完全基于组件技术,它不仅定义了组件格式,还定义了组件的应用环境—一个动态的组件管理器。这个相当于动态版本的COM注册表的设施,允许我们在运行期切换组件实现,从而强化了组件的应用范围和能力。
 
BOS又是一个软件框架。与其它软件框架不同的是,它不包含任何领域相关的细节,而只是作为一个组件启动器而存在。因此,它可以通用的为绝大多数应用所采纳,而软件应用也因此得以实现完全组件化。
 
从组成上来观察BOS,则可以简单的讲,BOS包括组件、组件管理器、进程启动器和配置数据。其中,组件管理器和进程启动器由BOS系统开发者提供,而组件和配置数据则由应用开发者提供。
 
正如你所见,BOS并不是一个复杂的结构,但其应用范围和威力却不容小视。它的实质是一次轻巧而有力的设计思维转型,其结果则有可能是设计领域一次新的革命。
本文为BOS(Basic Object System)相关文档。BOS是一个通用软件框架。BOS源码可在下面链接下载:

BOS设计缘由(二)

1.3  更好的组件解决方案 使用组件之后,我们可以有效地解决问题列表中的1至3。但是,如果将想像稍作深入,我们会发现事情还能做得更好。假设例程中的Device类有多种绘图风格,那么我们也许会想让最终...
  • Serenade
  • Serenade
  • 2007年09月29日 21:14
  • 611

BOS的设计缘由

 让自己的工作得到复用,是每一个开发者,尤其是身处设计层次的有经验的开发者的共同心愿。本文就从复用性入手展开讨论,引申出BOS的设计缘由。 1.1  问题观察下述代码(C#),试着找出其复用性不佳之处...
  • Serenade
  • Serenade
  • 2007年09月28日 16:03
  • 792

金蝶KISBOSV3.2.2发版说明及程序下载

http://downloads.cmcloud.cn/kis/kis_tools/KISBOSV3.2.2Setup.rar 功能支持: 1)支持:支持SQL多实例模式下的应用,支持金蝶KIS专...
  • csdn_kisbos
  • csdn_kisbos
  • 2016年12月10日 10:32
  • 1021

BOS开发部分问题解决办法

问题12:如何修改F7 字段所关联的基础档案 在一般情况下,在BIM 视图对单据新增F7 字段时,就可以关联到想要的基础档案或其它视图。但是,当需要关联一些不存在业务单元(即*.bizunit 文...
  • u011055617
  • u011055617
  • 2017年04月12日 18:41
  • 478

金蝶EAS BOS

什么是金蝶EAS BOS? BOS,Business Operation System,业务操作系统,是金蝶融合多年的企业应用软件的经验以及MDA理念研发新一代技术平台,是金蝶公司全新的...
  • qiaqia609
  • qiaqia609
  • 2013年02月19日 10:13
  • 8762

省市名称及其缘由

全国各省名称由来: 山东:以在太行山之东而得名。唐大部分属河南道;宋设京东路,后分京东东、西路;金更名山东东、西路,为山东得名的开始;元设山东东西道;明置山东省,后改山东布政使司;清改山东省,省名至今...
  • chong023
  • chong023
  • 2010年03月13日 12:46
  • 3568

JUI窗口连带

// 联查处理 public void actionLianCData_actionPerformed(ActionEvent e) throws Exception { this.set...
  • fei_lv
  • fei_lv
  • 2013年05月17日 15:11
  • 470

BOS项目练习(项目概述,环境,页面[easyUI,Ztree],数据库PowerDesigner)

1.    项目概述 1.1   项目背景介绍 BOS(Bussiness Operating System)-----业务操作系统  本项目物流BOS项目分为基础设置、取派、中转、路由、报表部...
  • scholar_man
  • scholar_man
  • 2016年06月20日 14:08
  • 1061

解决金蝶K3BOS万能报表打不开

搜索整台电脑文件名为“LoginSetting.ini”(有三个),打开,查看参数ServerName=设置的服务器地址/名称    是否正确,修改保存OK。...
  • ccrong
  • ccrong
  • 2015年04月04日 09:21
  • 3725

7.3 结构化文档表示

7.3 结构化文档表示       我们将在这一节设计的数据结构从 HTML 格式获得灵感,这是大家熟悉的,并成功创建文档的语言。就像 HTML,我们的表示有几种类型的内容,并且可能以适当的方法嵌...
  • hadstj
  • hadstj
  • 2011年06月06日 18:28
  • 389
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BOS设计缘由(三)
举报原因:
原因补充:

(最多只允许输入30个字)