记一次公共服务分离

概览

原来写了一个mybatis可视化自动生成工具。为了主体代码不可见,并且适用于多个不同项目。对这个项目做了公用部分分离。

原则采用了,公共服务下沉,业务服务上浮的原则。主要难点在于:之前多为过程写法,如何抽离公共服务,易于支持扩展特异服务。小难点:区分是公共服务还是特异服务,分离并且可更改。

要求达到的目标是,特异需求都不再需要改公共服务。假如我要实现一个业务,就改底层原则。这样底层就会复杂成一个怪物。并且这个模块就要维护和本不该自己维护的东西,于后期再改代码非常不利。

需要配置

总体来说约定大于配置的方式很适合这种项目。所以很多都有默认参数。

数据库相关:

数据库连接地址,账号、密码。jar位置,加载器是哪一个,自定义的数据库字段读取类型。

每个库相关

每个库的名字,每个库可能会有的额外后缀。包名

特异服务和通用服务

什么是特异服务,当我有一个需求的时候,这个需求只会影响到这一个项目。这就是特异性的东西。这是绝对不能放在抽离出来的公用服务里。这样会有一个问题。比如项目1和项目2都引用了一个东西项目1把底层改了,项目2出错了。这就让项目2很委屈了。

抽离方式

比如对我之前对一个库生成出来的类会有特殊处理。这个东西能用boolean来划分吗?没做分离之前是可以的,但是这样做的方式好吗,当时我觉得很不错。但是分离之后,这样并不好,假如我有另一个库生成的类也要做处理,他俩处理方式还不一样。这必然会造成冲突。我本来是继承重写对生成累的重写方式。这样会有很多重复代码。并且对两个库都要根据名字处理,这样就会非常的糟糕、能实现吗,能!实现的好吗,只能说有点“some body”的味道。这里最实用的还是注册使用的方式。完全解耦,并且扩展很容易。这里大量重构才解决了这个问题。只能说之前耦合太高了,抽离多个改写文件的方法。分散到了不同的子类去实现。易于理解、维护、扩展的多。正好符合了少修改最好不修改,易于继承和扩展的原则。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值