我的重要 OOP 特性们啊。
[Read More]
责任链模式
这种模式适合在一件事情有多个模块或者类可以处理,然后处理完事情之后的可以决定改事情是否可以继续被处理
使用场景
实现方式
该模式适合应用场景为对一个目标事件的处理是互斥的,也就是说这个如果某一事件有人处理了,需要告诉下游处理者改事件已经被消费,下游根据这个指示就不做多余处理
正常情况下是事件的消费者之间是有关联的,也就是说假如有 a b 事件处理者,例如 a 持有 b, 那么可以在 a 中首先掉一共 b 消费或者处理改事件的方法,如果该方法标明自己已经处理,那么 a 就不会继续改事件
项目中实践
做游客模式的时候对某个事件有多个处理者,一个处理了之后就不会去继续流转该事件
我在项目中的实现方式
还有一种实现方式是 这些事件处理者有一个统一的处理器,例如我在游客模式那样,只要判断有处理器反应处理,那么事件就不会继续流转,这种方式就是增加了一个协调处理器如何消费事件的角色
[Read More]
建造者模式
这种模式最常见于构造某种参数或者变量或者被使用的类
使用场景
实现方式
使用 builder 创建者模式的场景一般为构造一个参数含有大量数据的场景
将 builder 模式内置到目标类中,目标类使用 private 修饰构造方法,对外暴露对应的 builder 通过链式调用 builder 的各种方法后,调用 build 生成对应的目标类
项目中实践
使用 spm 打点的时候借助 kotlin 语言的 DSL 特性实现了 builder 模式,在广告 sdk 中也使用该模式创建参数
类似结构
还有一个类似结构就是类的立案时调用,不使用 builder 直接在对应的方法返回 this 也可以达到链式调用的目的
[Read More]
设计模式六大原则
设计模式的基础原则,所有的模式都是基于这六大原则而衍生出来的,各种设计模式都有其比较适合的应用场景,而这个六大原则才是重中之重,如果写的代码能够满足这个六大原则中的大多数,那么即使不是完完全全适合某种模式那也是好代码
我的重要原则们啊。
[Read More]
抽象工厂模式
一般用于产生某种类或者结果,使用抽象工厂可以屏蔽生产细节,方便迭代更新
使用场景
实现方式
构造复杂对象,且对象细节不想被用户知道
定义简单工厂或者抽象工厂去完成对象的创建,一般使用抽象工厂好点,因为可以替换为二代工厂,或者在工厂内替换生产者的实现类
在三方库中发威
hilt 使用对应的 factory 构造对应的类,例如 我们使用 inject 注解定义的注入项就会生成的对应 factory 例如下面代码 GrowthTest
项目中实践
在广告 SDK 中使用 工厂模式产生对应的处理类
[Read More]