文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-状态模式)(下)

代码运行结果如下:网络异常,图片无法展示|通过状态模式,我们把事件触发的 状态转移和动作执行,拆分到不同的状态类中,避免了分支判断结构。顺带带出UML类图、组成角色、使用场景及优缺点~网络异常,图片无法展示|Context (上下文信息类) → 存储当前状态类,并负责具体状态的切换;State (抽象状态类) → 定义声明状态更新的操作方法,可以是接口或抽象类;ConcreteState (具体....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-状态模式)(下)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-状态模式)(上)

0x1、定义原始定义允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了自己的类一样。简单点说让一个对象通过一系列状态的变化来控制行为的变化。状态模式 和 策略模式 极其相似,可通过内在差别进行区分:策略模式将具体策略类暴露出去,调用者需了解每种策略的不同之处以便正确使用,封装的是不同算法,算法间没有交互,以达到算法可以自由切换的目的。状态模式状态的改变是由其内部条件来改变的,与外界....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-状态模式)(上)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-责任链模式)(下)

② 怎么组成一条链继续跟 networkInterceptors,定义了一个公共获取拦截器列表的方法:网络异常,图片无法展示|看下哪里用到了,定位到 RealCall.getResponseWithInterceptorChain() 中:网络异常,图片无法展示|把拦截器全加到列表里,等下按顺序走,很好理解,然后是这个 RealInterceptorChain,关注下传入参数,除了关注inter....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-责任链模式)(下)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-责任链模式)(中)

0x3、责任链的 "纯与不纯"纯责任链 → 要么承担全部责任,要么责任推给下家,不允许在某处承担了部分或全部责任,然后又把责任推给下家;不纯责任链 → 责任在某处部分或全部处理后,还往下传递;0x4、加餐:模式应用示例 → OkHttp拦截器核心原理Android著名的第三方请求库OkHttp中的拦截器,就用到了责任链模式,我们来扒一扒具体的实现原理~① 两个小知识点通过继承 Intercept....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-责任链模式)(中)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-责任链模式)(上)

0x1、定义原始定义将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,知道链上某个接收对象能够处理它为止。定义看起来有点抽象,简单点就是:构建一个处理流水线来对一次请求进行多次处理。还是不懂?没关系,写个简单例子帮助理解~0x2、写个简单例子你问哥哥、粑粑、麻麻拿钱,门槛依次是100,500,1000,只能按照一层层往下走,比如:10....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-责任链模式)(上)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-策略模式)

0x1、定义原始定义定义一系列算法,封装每个算法,并使它们可以互相替换。策略模式使得算法的变化独立于使用它的客户端。这里的算法和上节的模板模式说的"算法"一样,不特指数据结构和算法中的算法,可理解为广义上的 业务逻辑。0x2、写个简单例子Talk is cheap, show you the code,一个简易计算器的例子,没使用策略模式前:public class Calculator { .....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-策略模式)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-模板模式)

0x1、定义原始定义在操作用中定义算法的框架,将一些步骤推迟到子类中。模板方法模式让子类在不改变数据结构的情况下重新定义算法的某些步骤。定义解读定义里的 算法 可以理解为广义上的 业务逻辑,而不特指数据结构和算法中的 算法。算法骨架就是 模板,包含算法骨架的方法就是 模板方法,这也是模板方式模式名字由来。好像还不是很理解?写个简单例子~0x2、写个简单例子还是奶茶店的例子,可以把一杯奶茶的步骤可....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-模板模式)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-观察者模式)(下)

静态数组保存 FindState 避免重复创建:网络异常,图片无法展示|上面循环递归订阅类及其父类(直到父类java、javax、android.开头为止),递归同时调用 findUsingReflectionInSingleClass() 方法:网络异常,图片无法展示|findSubscriberMethods()通过读取编译时生成文件或反射获得订阅类中所有的订阅方法数据,接着看下subscr....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-观察者模式)(下)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-观察者模式)(中)

0x2、观察者模式的推与拉推方式被观察者 → 观察者推送主题的 详细信息 (通常是被观察者的全部或部分数据),不管观察者是否需要。拉方式被观察者 → 观察者,只传递 少量信息,如果观察者需要更详细的信息,可主动到被观察者中获取,一般的实现方式是被观察者自身通过update()方法传递给观察者,观察者再通过这个实例按需获取。推方式是假定被观察者知道观察者所需的数据,拉方式是被观察者不知道观察者具体....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-观察者模式)(中)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-观察者模式)(上)

0x1、定义又称 订阅-发布模式,在对象间定义一个一对多的依赖,当一个对象状态改变时,所有依赖对象都会自动收到通知。被依赖对象称作 被观察者,依赖对象称作 观察者。听着有点抽象,写个简单例子帮助理解 (蜜蜂、蝴蝶授粉):// 观察者:昆虫接口 public interface Insect { void startWork(); void stopWork(); } // 具体观...

把书读薄 | 《设计模式之美》设计模式与范式(行为型-观察者模式)(上)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等