设计模式(不写只学习引用)
慢慢收集中=====
希望这些模式能够手动的去写一遍,才能很好的去理解,不然光看,你是能看懂,但真的写的时候,却写不出来,或者只能复刻. 要去写, 才能真的理解到一些东西, 同时也会主动去想一些情况扩展想法
策略模式:
大白话介绍:就是说,有一个方法,传进来了一个参数(举例:手机),需要去根据这个参数做判断选择处理,如果是传的小米,然后咋咋咋,如果是苹果,然后咋咋咋,就是哪个匹配上了就走相应的后续处理,正常来说就是用if else。但咱这是设计模式啊,得优雅,然后咱就创建了一个接口,这个接口实现了很多子类(这些子类也就是对应每个不同参数的else的部分,把每个逻辑部分分个类,规范好)。然后在创建一个对外使用的策略类,这个策略类连接上下文, 去处理匹配的问题,根据传的参数就直接返回相应匹配的结果。我们就只需要在代码中调用一个策略类即可,这样就很优雅同时也方便扩展,缺点就是实现逻辑的那部分如果太多,可能就会有很多个类,比较臃肿
模板方法模式:
大白话介绍: 接口主要是拿来做规范, 而抽象类主要是做复用的, 这个模式就是把重复共用的方法抽出来定义好, 同时保留自定义扩展行为. 具体实现就是在抽象类中实现了一个模板方法, 这方法中把通用的方法直接抽象类中实现, 然后保留需要自己定义扩展的抽象方法, 由子类去完成, 而这其中可以加一个钩子方法, 就相当于一个if else, 与扩展抽象方法挂钩, 后续就由这个钩子去判断是否需要做扩展. 使用的话直接就可以调用具体的实现类, 然后调用一下模板方法, 就直接把所有步骤的方法都调用了. 其实这些设计模式都能互相结合实现, 只要不瞎搞,先把接口暴露给外部,然后在业务代码中实现接口。如果多个实现类中有相同可复用的代码,则在接口和实现类中间加一层抽象类,将公用部分代码抽出到抽象类中
装饰者模式
传送门
大白话介绍: 它允许在不改变已有对象的基础上,动态地给对象添加额外的功能。该模式通过创建一个包装器(装饰者)来包裹原始对象,并在保持接口不变的情况下,增强其功能. 比如说我要买车(原对象), 车店同时提供了其他的产品选择: 加热车垫, 记录仪, 升级轮毂 ... 等等, 这些是由我自己选择, 那么我现在需要加上车垫和记录仪, 车也就相对的把产品和价格加上显示, 而并没有改变源对象, 做增强作用, 同时也可自定义重复套用