# DesignPattern **Repository Path**: uruminkon/design-pattern ## Basic Information - **Project Name**: DesignPattern - **Description**: 总结互联网相关的设计模式组合,以及常见业务使用相应的设计模式搭配来实现代码的解耦,如工厂加策略,状态加观察者,责任链,迭代器等实现以及他们的互联网使用场景。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2023-09-03 - **Last Updated**: 2024-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Design Pattern #### 介绍 总结互联网相关的设计模式组合,以及常见业务使用相应的设计模式搭配来实现代码的解耦,如工厂加策略,状态加观察者,责任链,迭代器等实现以及他们的互联网使用场景。 #### 应用 | 设计模式 | 应用场景 | 对应模块 | | --- | --- | --- | | 工厂策略 | 支付场景,业务接口有多种方式处理,通过实现各种策略接口,然后通过工厂类进行单例工厂整合,减少类的频繁生成,通过门面模式对外通过统一的接口;项目中业务功能存在多种操作逻辑,就可以通过策略模式实现| FactoryStrategy | | 状态观察 | 订单状态,业务存在状态转化;通过引入Spring状态机做状态转化的管理,用户状态变更时发送相应的事件转化枚举的消息,然后就可以通过消息事件监听的方式,异步的进行状态的变化。| StateObserver | | 责任链模式 | 投放、文件处理场景,业务有较长的处理链条且关联性不强,可将处理流程拆封成不同的责任点,并且后续扩展优秀 | ResponsibilityChain | | 迭代器模式 | ES查询大批量数据查询场景,由于ES查询一般分页最大条数的10000条,且大数据量往往不止这么多数据要查出,因此通过迭代器模式,进行ES查询的优化,在迭代器构造进行第一次查询,后续通过传出的cursor进行后续查询。|Iterator| | 装饰享元| 支付后的营销活动,比如平台积分更新,红包优惠卷发放等。通过对支付接口包装,实现新功能拓展,在相应的支付门面接口上,并且减少包装类的多次创建,通过享元模式,进行单例工厂映射。 | DecoratorFlyweight| | 模板方法| 核心审计日志记录,如用户操作记录,订单记录,支付记录等,并且发送到消息队列给不同部门处理;模板方法也可以配合责任链进行使用,抽象process类做责任链条搭建和调用模板处理方法和跳转下个责任点,子类实现模板方法做责任链节点|Template| |建造原型|开具增值发票,建造者创建个人发票和单位发票,原型模式克隆减少公共部分的创建,还有不同业务类型的多种类别创建也可以采用建造者模式|BuilderPrototype| |桥接模式|第三方登录,和策略模式类似,做各种第三方的登录功能抽象实现,然后通过一个桥接类(门面类),做各种登录的桥接,controller接口调用后,通过type传入同一个sevice方法,桥接接口通过type去执行对应的第三方登录。|类似策略模块| |组合访问|商品多级分类,通过组合模式来构建树形接口,在通过访问者模式来进行操作限制;这种模式也适合在做权限树的添加或者删除上,或者是一些部门组织的管理上也是适用。|CompositeVisitor|