关于封装的设计

徐晶
2004-7-8

----
封装的概念经常在软件开发过程中遇到,这个概念似乎比较空旷,找不到一个准确的定义,而且不同的文章所涉及的点均不同。 其实就大的方面而言共有两种层次的封装:1.技术封装 2.业务(也称为软件功能)封装。
----先说说技术封装:它是最最常见的,总是为了实现一个特定的技术问题而把一些实现细节给封装到一个函数中。举个例子: 数据库程序里经常用到的一个小功能就是把数据库表的一个字段的纪录放在下拉框中,如图中把公司表的缩写字段放在一个下拉框中, 对于这个简单的功能可以封装在一个小的函数中来实现,只要告诉这个函数几个条件就可以了 1.要从那张表来提取数据2.该表中的字段名3.要在哪个下拉控件中显示,故可以定义这样的函数 GetCombolValue(string TableName,string FieldName,ComboBox cboName) 。
----然而该函数只是对常见的技术动作做了一个简单的封装,没有涉及到应用方面,好像一个简单的工具做好了放在那里,当用这些工具再去构建很大的系统时便会出现很繁琐的问题。比如说现在有一个系统:共有5大模块,每一个模块都要导入采购数据,如果分别为各模块书写函数的话将很繁琐,因此可以考虑将导入采购数据这个"业务"封装起来,这一层的封装比刚才说到的技术封装又高一层次,该层次是通过调用技术封装好的各个函数组合成的具有 独立功能意义的功能块
----现在一个个独立的功能块已经实现了,但是又会遇到这样的问题。 假如系统分为采购,库存,财务等等8个模块,那时候的功能块将变得非常的缭乱,这时候还需要按照模块来组织这些小的功能块。如此一个初步的业务封装便形成了。比如可以把各个和采购有关的操作封装在类Purchase中,其中的一个功能导入采购数据可以作为Purchase的一个方法(子函数)。这样结构就清晰了。
----封装的设计过程中有许多的原则,最基本的一个原则就是功能的独立性, 一个独立的子功能的实现只能实现一次。 举个例子:数据库程序中一般会有一个全局的连接字符串,这个字符串的拼凑牵涉到具体的数据库, 不同的数据库格式不同,对于这种细节只需要放在一个函数中实现就可以了,没必要在每次用到的时候再去拼凑。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值