GTD & GOF
荒芜的学生时代末期和找工作阶段,对oop和design patterns做了背书式学习。看了YouTube上一位光头大胡子前辈对oop的生动阐释,也强行输入了一堆GOF设计模式里的名词。基本做到了看过、忘了的境界。
在一堆乱草中工作一段时间后,迷乱了方向。其一对职业方向的不确定性抱有很大的疑虑,技术无长进业务不够格,高不成低不就的尴尬,滋生很多负面情绪,归其原因就是眼高手低,执行交付结果差强人意,没有可以作为信心支撑的瓷器活。
摆脱困境的方式唯有动起来。18年底做了GTD的学习,审视自己的工作生活习惯和模式。对职业方向的不确定性,也唯有捧读指路明灯。19年2月至3月初过完一遍GOF设计模式,敲下键盘回顾下。
复用
书名副标题点名复用,这也是软件设计的重头戏,化繁为简,简到可复用(懒)。
实现复用的基本技巧:
继承:编译时刻静态定义的白箱复用。同根同族,技能世代传承,还可以二次拓展,技能树满满的。
对象组合:运行时刻获取其他对象引用的黑箱复用。异族派来的大使,可以协助处理很多事务,办事循规蹈矩,诡异莫测。
委托:也属于组合,只是把处理请求直接丢给代理者(delegate). “隔壁老王,帮忙看下孩子。” 老王带孩子很开心。
参数化类型:模板。抄作业不改名字,这事从来没干过。
创建型模式
该在什么场景实例化?实例化哪一个?实例化多少个?全局一个还是实时创建?创建型即把实例化的过程抽象,把do和what分隔开,把实例化的动作隐藏起来,呈现出一个统一入口。
Abstract Factory
场景:Y流水线作业出来一个小黄,O流水线作业出来一个小橙,老板想要混合颜色的产品,,怎么弄?
方案1:新建一条七彩流水线
方案2:借用Y和O的流水线(假设产能足够),复用现有技术和配色
Builder
简化复杂对象的创建过程,例如多参数,参数必要和非必要混合甚至继承关系中的构造。
把复杂的constructor方法用builder的方式,一步一步的配置属性在最后build得到目标实例。
Factory
Prototype
Singleton
结构型模式
如何组合类和对象已获得更大的结构
Adapter
适配:将两个无关对象通过组合的方式,实现接口的兼容。
Bridge
Composite
Decorator
继承扩展功能简单直接,但是引入过多分支会爆炸,俗称类爆炸,这时候可以用组合的方式来解决。即提倡的组合优于继承。
decorator又名wrapper 套壳。譬如,天冷了加件长袖,不够在来个外套,还冷的话加个羽绒服,如果还冷就买暖气吧。寒冷中涩涩发抖的你是对象实体,在加衣服的过程中不涉及实质改变,只有外观的变化,以达到保暖的功能。
Facade
Fly Weight
Proxy
行为模式
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
对象状态的变化会引起对象行为的改变,在几个状态之间切换。变化的状态即可以抽象出一层,实现对象和抽象状态的组合。实例状态在引到对象在状态之间切换。
Strategy
处理请求时有很多并行的方式,算法或策略,策略模式即把这些类似的行为(看做一个策略集合)抽离出来,使集合内部互不干扰,对外以接口的形式提供策略。而原有请求只需保有对这个策略集合的引用,根据情况使用特定策略。
Template Method
Visitor
Ref:
- https://refactoring.guru/design-patterns/what-is-pattern
- https://youtu.be/SS-9y0H3Si8
网友评论