系统演进中的单一职责与可维护性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统演进中的单一职责与可维护性相关的知识,希望对你有一定的参考价值。
一、背景
会员平台系统A提供基础的账户登录服务。业务系统B作为业务线的业务平台型系统承载各业务系统。
B及各业务系统j基于A提供的登录拦截器来进行登录态的判断。
由于B及各业务系统越来越多,各业务系统不需要感知系统A的存在,而是基于B来透传一个统一的业务平台登录框。
二、单一职责
V1.0
B系统基于A的底层拦截器封装一层业务平台型的拦截器,并将B之前的一些业务权限校验的逻辑也放到B的登录拦截器中。
1.0设计的出发点
各业务系统在B上透传,因此理所当然的遵守B的权限校验规则。
但是B既是业务系统也是其他业务系统的平台,各业务系统不应该与B的权限校验耦合。
2.0 优化
B的登录拦截器只提供统一的业务平台型的登录态校验,并做一些B系统的平台型的业务功能即可,将权限校验逻辑单独剥离到B系统的业务独有的拦截器中,
让B提供的登录拦截器保持单一职责~
三、可维护性
另外,B系统自身的拦截器是基于阿里自身的Webx框架,但由于部分新接入的业务系统基于SpringMVC框架,因此B需再提供一套SpringMVC的登录拦截器。
最初,简单粗暴将B已有的对外maven 二方包client jar 复制一份client-spring jar二方包,逻辑几乎一致,只是将Webx的valve改为SpringMVC的Interceptor
这种方式维护2份client jar并且代码逻辑几乎一致。
改进:只提供一份client jar。里面既提供Webx的Valve也提供SpringMVC的Interceptor。将登录的核心校验逻辑剥离成公共的部分,只保留Valve、Interceptor的不同部分。
后续如果有其他接入业务系统采用另一种不同的MVC框架,可快速扩展
以上是关于系统演进中的单一职责与可维护性的主要内容,如果未能解决你的问题,请参考以下文章