记录一次模式使用的经历

  1. 本人做了之前做了护士站的欠费查询,由于系统新增了欠费配置,所以需要将欠费配置加到欠费查询中去,欠费规则的配置目前是科室级别的,但是考虑到规则配置范围会根据医院(规模大小-床位)的不同有所调整,想到了用策略模式。

  2. 策略模式跟跟工厂模式很像,都是继承和多态。策略是对行为的封装,而工厂是对对象的封装。欠费配置不稳定的是规则的使用范围,是行为,所以我采用策略模式

    在这里插入图片描述
    但是策略模式封装完行为后,发现一个致命问题,配置范围可大可小,最大的范围是全院范围,其次病区范围,然后科室范围。优先级理应由小到大科室>病区>全院。那就要写三个if,筛选病人类型又分正常病人,欠费病人以及全部病人,这样看起来,仅仅用策略模式封装,内部还是很复杂。假如要加一个分院概念,是不是要多一个全部院区的范围,亦或者医院的科室和病区没有上下级的关系,那每换一家医院都要重写一个算法。而且if嵌套太多,代码维护容易出错。
    于是乎,我用了状态模式解耦配置范围的前后关系,一个范围一个类,他们共用一个基类,共同继承一个work的业务接口,这样,扩展一个新的范围,或者更改前后关系就会变得很方便。
    但是美中不足的是业务核心的筛选病人类型还是写了三个if,于是我用病人类型的枚举和反射直接解耦业务核心判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值