备忘录(快照)
最近公司和三方系统对接需要将系统的订单信息同步到三方系统中,订单信息设计到多次支付,多次退款,接口同步涉及到失败的情况,比如 一笔订单支付两次 ,部分退款一次 ,第一次成功,第二次失败,第三次成功,这样三方系统的状态会出现不一致,当我们发现状态不一致的时候需要回放上一次调用的情况重新触发调用,因此每次调用需要有当时的快照信息,以便重放。
快照模式目前的场景单次回放上一下就可以了,多重检查点似乎更适合无状态的情况。还未发现使用场景
骨架模式
继承的场景一定要确定类和类之间是is a 的关系,否则还是要慎用,你永远不知道,你的子类是在什么样的上下文中使用你的父类,尽量减少让子类覆盖的方法,必须覆盖的场景要写好注释,描述好使用场景,切记不要在构造函数里使用覆盖方法,会存在成员未初始化完的情况。
多用组合少用继承,利用好组合,使用接口,结合静态内部类还可以模拟出多重继承的效果
静态构造方法
builder 模式适合多参数的情况,重叠构造的情况,又不能明确的显示出此次对象的构建的使用场景,而且当类型相同的参数会导致一些微妙的错误,如果使用者不小心颠倒里其中几个参数的顺序,编译还不报错重叠构造函数还有一个确定是他不能重命名(对象的功能还是单一点比较好,不过总有无奈的情况),使用javabean 可以避免参数顺序的问题,但是这样构造过程就由多步组成,状态就不能很好的保证。
静态构造方法可以让你按照你的使用场景命名的构造对象。