设计模式

【设计模式工程实践】装饰器模式记录对订单管理的操作日志

装饰器模式:对目标类的功能进行增强,但是又不想去直接修改原来的类的代码,因为一旦修改就得重新测试这个类,违背“对扩展开放,对修改关闭”的原则。另外,有的时候想增强的类是别人给的jar包,你想修改也没法修改。此时,就可以上装饰器模式。装饰器模式有一些非常经典的实现(1)比如java的io体系,可以一层

  • Jone
    Jone
2020-11-30
设计模式

【设计模式工程实践】状态模式-审核流程管理

状态模式:封装数据的状态流转逻辑状态模式里,非常重要的一点就是将状态之间流转的逻辑,封装在Context类里面。本来可能需要调用方自己维护复杂的状态流转逻辑,流转到不同的状态之后,执行状态对应的代码逻辑。需求背景:上线一个商品的流程包括:编辑,审核,上架三个过程。处于每个流程时,状态属性是不一样的定

  • Jone
    Jone
2020-11-30
设计模式

【设计模式工程实践】组合模式和访问者模式

组合模式:对层级数据递归调用执行操作我们要对部门树,删除一个父部门以及其下所有的子部门系的那种场景,比如部门树的递归删除,或者是文件树的递归删除之类的场景。访问者模式:访问者模式,是对目标对象,动态的执行某个功能,而不对目标对象有任何的改动。访问者和组合模式天然适合组合起来使用。需求场景:一个管理系

  • Jone
    Jone
2020-11-30
设计模式

【设计模式工程实践】迭代器模式

迭代器模式:数据类型改了但是遍历代码不变,实现抽象解耦所谓的迭代器模式,什么时候用?其实只有一个场景,就是如果你需要基于一些不支持迭代的数据,来让我们业务代码进行迭代,那么你自己就要去实现基于那个数据的一套迭代代码,以迭代器的方式返回回去给业务方,来通过你定义的迭代器,进行数据的迭代。mysql数据

  • Jone
    Jone
2020-11-30
设计模式

【设计模式工程实践】策略模式-完成各种运费计算规则

根据不同的输入差异,应用不同的规则,得出不同的输出值这种情况就适合策略模式。需求:计算一个订单运费的适合,会根据重量和目的地有各种计费规则:固定运费,满XX包邮,某几个省份包邮,超过多少重量加价多少等等。如果选择了固定运费:让你设置一个固定运费是多少元,固定运费20元。{“fixed_freigt”

  • Jone
    Jone
2020-11-30
设计模式

【设计模式工程实践】责任链模式实现入库单处理

责任链模式:动态组装不同的复杂业务流程什么时候用责任链模式呢?就是如果你需要动态组装一个业务流程出来,流程中的每个handler业务逻辑需要复用,那就用责任链模式。首先,每个流程是一个独立的逻辑其次,流程之间有先后顺序,上一个成功再下一个。一环接一环,就适合用责任链模式。由上一个流程的实现类依赖并调

  • Jone
    Jone
2020-11-30
设计模式

【设计模式工程实践】复杂工厂+ 模板 + 命令 实现的库存管理

template method 模板模式他们共同的基础逻辑抽取到父类中,然后将要子类实现的逻辑留空,交给子类去实现。场景:(1)我们有多种优惠策略(2)不同的优惠策略在计算的价格的时候,有一些通用的基础逻辑(3)每种优惠策略还有一些是自己特殊的价格计算的逻辑简单工厂模式工厂模式的核心思想,其实就是不

  • Jone
    Jone
2020-11-30
设计模式

【设计模式工程实践】适配器模式的典型使用场景

适配器模式:1、解决历史遗留不同版本的兼容问题。这个模式一般是在系统不断升级的过程中,新版本的接口相比老接口改变了很多。需要面向新的接口编程,但是很多代码都是基于旧版本去封装的。此时就通过适配器,它实现新接口,但是组合了老接口的实现类,多数功能的实现是通过复用老接口的实现类搞定的。这样既实现了新接口

  • Jone
    Jone
2020-11-07