责任链模式

这种模式适合在一件事情有多个模块或者类可以处理,然后处理完事情之后的可以决定改事情是否可以继续被处理

使用场景 实现方式 该模式适合应用场景为对一个目标事件的处理是互斥的,也就是说这个如果某一事件有人处理了,需要告诉下游处理者改事件已经被消费,下游根据这个指示就不做多余处理 正常情况下是事件的消费者之间是有关联的,也就是说假如有 a b 事件处理者,例如 a 持有 b, 那么可以在 a 中首先掉一共 b 消费或者处理改事件的方法,如果该方法标明自己已经处理,那么 a 就不会继续改事件 项目中实践 做游客模式的时候对某个事件有多个处理者,一个处理了之后就不会去继续流转该事件 我在项目中的实现方式 还有一种实现方式是 这些事件处理者有一个统一的处理器,例如我在游客模式那样,只要判断有处理器反应处理,那么事件就不会继续流转,这种方式就是增加了一个协调处理器如何消费事件的角色 [Read More]

建造者模式

这种模式最常见于构造某种参数或者变量或者被使用的类

使用场景 实现方式 使用 builder 创建者模式的场景一般为构造一个参数含有大量数据的场景 将 builder 模式内置到目标类中,目标类使用 private 修饰构造方法,对外暴露对应的 builder 通过链式调用 builder 的各种方法后,调用 build 生成对应的目标类 项目中实践 使用 spm 打点的时候借助 kotlin 语言的 DSL 特性实现了 builder 模式,在广告 sdk 中也使用该模式创建参数 类似结构 还有一个类似结构就是类的立案时调用,不使用 builder 直接在对应的方法返回 this 也可以达到链式调用的目的 [Read More]

抽象工厂模式

一般用于产生某种类或者结果,使用抽象工厂可以屏蔽生产细节,方便迭代更新

使用场景 实现方式 构造复杂对象,且对象细节不想被用户知道 定义简单工厂或者抽象工厂去完成对象的创建,一般使用抽象工厂好点,因为可以替换为二代工厂,或者在工厂内替换生产者的实现类 在三方库中发威 hilt 使用对应的 factory 构造对应的类,例如 我们使用 inject 注解定义的注入项就会生成的对应 factory 例如下面代码 GrowthTest 项目中实践 在广告 SDK 中使用 工厂模式产生对应的处理类 [Read More]