具体到农房批量生成附记,UML类图改造如下:
核心代码改造点如下:
将外部控制器要操作的核心领域类从通用的HjxxDomainService,修改为抽象的AbstractHjxxDomainService。
HengyangHjxxDoMainService通过通用的CommonHjxxDomainService实现无需特殊化处理的方法,减少重复代码。
CommonHjxxDomainService(原HjxxDomainService)继承AbstractHjxxDomainService和IplGenerateFj(视情况复杂度可以不要),其余不做修改。
在AbstractHjxxDomainService中增加一个具体实现工厂(后期可以优化成依赖注入的形式)
外部控制器中涉及到农房批量注记时将前端传入的方法名传入工厂,调用生成对应业务类并执行动作
通过以上5步改造,我们就不动产的农房业务的户籍信息领域模块单独拆分了一套通用版本和一套衡阳版本,其中衡阳版本除了批量生成附记,其他模块本质上还是用的通用版本方法,只不过已经具备了继续扩展独立的可能性。改动量小,安全,且切实可行的能够解决版本控制问题。因为既然能够拆分成单独的文件,那么一定可以继续拆分成单独的动态库,然后在工厂方法中通过反射的方式动态寻找,加载和绑定。
遇到全新的方法时,我们也可以从容的选择多种方式,如果是在现有工程中修改,则修改抽象类(接口),然后首先实现通用版本,对其他地区版本直接调用通用版本方法。当然这样对代码破坏性比较大,我们完全可以不要改动现有类库中的抽象类和接口,通过扩展的方式在原类上增加新的方法和接口(以C#语言为例)。