工作中可能会遇到很多重复的工作,重复的工作可能导致大量的工作量,可能会使重复的代码过多,也可能会导致方法的耦合性太大,动一发而牵动全身,不防考虑一些设计模式来简化工作。
所在项目:新工作流平台
功能点:切换推送代办的方式
(Kafka
推送代办或者
rabbitMQ
推送代办
)
模式讲解:
状态模式把对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。
状态模式包含的角色:
(1) 环境(Context)角色,也成上下文:定义一个接口,接口中包含具体的状态类实例。
ActTodoTaskMQManager
读取配置文件中的配置的状态和常量类对应的状态相比较,来确定使用哪个状态对象。此处实现不完美,应该在页面提供一个选择RabbitMQ还是Kafka的功能,将推送代办类型写入数据库,从数据库读取数据而不是从配置文件中读取。但是工作流KafKa已经去除所以加了配置文件。
(2) 抽象状态(State)角色:定义一个接口,用来封装环境(Context)对象中确定的一个状态所对应的行为。
(3) 具体状态(ConcreteState)角色:实现State接口,完成真正的业务逻辑。
客户端调用:
优点:
再来个rocketMq
,activeMQ
,只需要实现ActTodoTaskMQState
接口即可,扩展性很好。
缺点:ActTodoTaskMQState
接口中有多少方法就需要所有的实现类去实现该方法。
|
项目中使用的设计模式之状态模式
最新推荐文章于 2024-08-21 22:00:00 发布