软设计

上一篇《硬设计2,刚才说桥接了,下面再说说桥接和状态,观察者,策略》
软设计,
讲了好多的硬设计了。
回忆一下。主要两个方向。
1 位置的规划,主要针对静态属性。
2 针对抽象的规划,实际就是接口和多态。
剩下的几个属性就是软规划了。
读写,私保公
这5个属性,就是对访问权限的控制,即使全部用写和公,也不会有问题。
但是代码的可读性和维护就会很困难。
这些属性的更多价值,是设计者把自己的权限控制意图表达给读代码的人的。
如果从外面看,你只关系公有属性就行了。
如是只读的变量,你就不用担心你的变更会影响到他的作用。
软设计往往更能体现设计者的功力。
其实也很简单,就是一个原则,就是尽可能的少给权限。
对于个人而言,你总希望权限越大越好,别把你的才能限制住。
但作为一个管理这则不是这样,他希望你的权利刚好够用就好。
这是限制其实也是保护,如果你真的没做过领导,那么你设计那么多的对象。
对那么多的对象而言,你就是领导,甚至是上帝。
权限不只是限制,更主要的价值在于保护。
在社会而言,规则是啥,就是限制。
试想,如果你生活在没有规则和法制的社会会怎样?
这下你应该明白对权利限制的价值了吧。
上面说的这些基本就是强调对权利限制的必要性。
如果你做个维护应该不需要我解释这么多,你就该明白对权利的限制应该是多么好的事情了。
权利多了,意味这一个代码多行为的可能。
而即使他没有那么多的行为,你在修改代码的时候,也都会有担心的。
因为他有那个权利了,你就不确定他做没做。
这时候会浪费很多多余的分析和担心。
一句话吧,最小的权限会另系统更稳定,维护更容易。
读写,私保公。
上面少了一个静态熟悉。
静态这个熟悉,有名称看好像是是否可变。
但实际上他有夸域的能力,如果你给他一个共有的属性,他就成为了全局变量了。
今天的东西是没有时间概念的,他的生命周期就是极大。
相当于系统里面长生不老的级别。
那么静态的具体价值是什么呢。
数据=变量,这里我都用变量这个词来说数据吧。
变量的定义位置,变量定义的位置决定了他的生命周期
1 全局:长生不老,除非系统退出。
2 类内:也就是成员变量。
3 函数内:临时变量,生命周期只限于调用的瞬间。
上面从位置的角度说了变量的生命周期。
具体说是位置决定了生命周期。
能够长生的只有全局变量。
如果引入了静态这个属性呢。
那就想贴了面试金牌一样,也长生了。
静态的价值是长生。
会到面向对象在说静态的价值吧。
对于类来说,有两种资源。
1.类基别的:可以用类调用
2.对象级别的:必须用对象调用
这一比就明显了,类是静态的,系统一运行就有,长生级别。
对向呢,只有使用的时候才有,非长生的。
这时候对变量就可以做如下区分了。
共全部对象使用的数据:可以设置为静态的
共每个对象使用的数据:设置为非静态的。
如果供全部对象使用的数据设置为非静态的行不呢?
可以,但是浪费了内存。
这也就是静态在面向对象设计中的价值吧。
关于上面的几个属性:读写,私保公,静。
在设计中如果细致的思考是有很多技巧的。
其实也可以简单说,用好了上面的6个属性,应该是不错的代码。
技巧也无非就是恰当的使用他们吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计说明书 版本:V1.0 文 档 编 号 保 密 等 级 作 者 最后修改日期 审 核 人 最后审批日期 批 准 人 最后批准日期 修订记录 日期 版本 修订说明 修订人 目 录 1 引言 1 1.1 文档控制 1 1.2 目的 1 1.3 范围 1 1.4 定义、首字母缩写词和缩略语 1 1.5 参考资料 1 1.6 概述 1 2 整体说明 1 2.1 业务背景 1 2.2 功能模型 1 2.3 用例模型概述 1 2.3.1 子系统一 1 2.4 假设和依赖关系 1 3 包1:出入库 2 3.1 冲补帐务-样例1 2 3.1.1 系统用例 2 3.1.2 类关系图 2 3.1.3 类图 3 3.1.4 顺序图 4 3.2 冲补入库单-样例2 4 3.2.1 入库单冲账 4 3.2.2 入库单补账 6 引言 文档控制 目的 范围 定义、首字母缩写词和缩略语 参考资料 概述 整体说明 业务背景 [此小节应说明件的业务背景,包括组织机构、业务流程等。] 功能模型 [此小节应说明用例包的组织,以用例包的形式来表达件的功能。] 用例模型概述 子系统一 用例图 [此小节应说明此子系统下的用例图。] 主角列表 [此小节以列表的形式说明此子系统相关的主角。] 用例列表 [此小节以列表的形式说明此子系统相关的用例。] 假设和依赖关系 [本节说明所有重要的技术可行性假设、子系统或构件可用性假设,或者可作为此文档所述件可行性的基础的其他与项目有关的假设。] 包1:出入库 画出包图、核心业务处理流程、状态转换图来说明核心业务的工作方式。 冲补帐务-样例1 系统用例 类关系图 类图 实体类 边界类 控制类 顺序图 分仓保管帐建帐处理流程 备注: 去掉价位一栏; 收获年限改为“年限“,入库年限改为非必输项; 国别改为必输项; 等级改为非必输项; 增加建帐的修改功能:只能修改等级、入库年限、产地。 冲补入库单-样例2 入库单冲账 前台界面 名称:account_grainin_strike.jsp 界面说明: 序号 界面名称 表 字段 字段含义 备注 1 编号 入库单 RC_RKD_RKDBH 入库单编号 顺序号 入库单 RC_RKD_SXH 顺序号 计划安排表 入库单 RC_RKD_RKJHAPBNM 入库计划安排表内码 需要转化为编号 计划明细 入库单 RC_RKD_JHMXNM 计划明细内码 需要转化为编号 入库通知单编号 入库单 RC_RKD_ZGKRKTZDNM 直管库入库通知单内码 需要转化为编号 客户名称 入库单 RC_RKD_KHNM,RC_RKD_KHMC 客户名称 客户内码 合同号 入库单 RC_RKD_HTNM, RC_RKD_HTH 合同号 合同内码 到库时间 入库登记信息 RC_RKDJXX_DKSJ 到库时间 收获年份 入库单 RC_RKD_NX 年限 等级 入库检验信息 RC_RKJYXX_WLDJNM 物料等级内码 后台服务 功能简介 入库账务服务 包名 com.digitalchina.zcl.stock.account 类名 AccountGraininServer 方法 名称 参数 返回值 描述 入库单补账 前台界面 名称:account_grainin_repair.jsp 界面说明: 序号 界面名称 表 字段 字段含义 备注 1 编号 入库单 RC_RKD_RKDBH 入库单编号 顺序号 入库单 RC_RKD_SXH 顺序号 扣杂 入库检验信息 RC_RKJYXX_KZZ 扣杂质(%) 扣水% 入库检验信息 RC_RKJYXX_KSF 扣水份(%) 备注 入库检验信息 RC_RKJYXX_JYYJBZ 检验意见备注 3 选择类型 入库检验信息 RC_RKJJXX_JJLX 检斤类型 0,称重;1,标准包 毛重 入库检验信息 RC_RKJJXX_MZ 毛重 水分扣量 入库检验信息 RC_RKJJXX_SFKL 水分扣量 杂质扣量 入库检验信息 RC_RKJJXX_ZZKL 杂质扣量 其它扣量 入库检验信息 RC_RKJJXX_QTKL 其它扣量 后台服务 功能简介 入库账务服务 包名 com.digitalchina.zcl.stock.account 类名 AccountGraininServer 方法 名称 参数 返回值 描述 补账 repairAccount 被补入库单内码 入库单补账; 根据被补单据产生一笔单据(RC_RKD): 红单标志为蓝单; 补帐标志为1补帐 补帐单据内码为被补单据内码; 补帐日期为当前日期; 审核标志为未审核; 能否记保管帐为1能; 能否记统计帐为1能; 保管帐记帐标志为未记帐; 统计帐记帐标志为未记帐; 删除标志为未删除; 制单时间为当前时间; 其余要素用户录入;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值