这是第一篇关于设计模式的理解,后续计划把整个23种设计模式分别梳理一下
等完成之后,再来写《设计模式整体理解(二)》
设计模式分类:
- 创建型
- 结构型
- 行为型
创建型设计模式
-
工厂模式
-
builder模式
-
单例模式
-
原型模式
创建型设计模式很好理解,也最容易理解。 我们在代码中声明一个对象,new肯定是最简单的写法,但是在复杂项目里,想要“高内聚,低耦合”,有些对象的创建必须要优雅,这样也让我们的代码更易读。 比如: 单例是最常见的 建造者模式一般用于独立一个sdk的初始化,或者比较频繁使用的对象。
结构型设计模式:
-
代理模式
-
装饰者模式
-
适配器模式
-
桥接模式
-
组合模式
-
门面模式
-
享元模式
结构型设计模式描述如何将对象组合在一起,关注的是对象之间的关系。 比如代理模式:代理类和被代理类:代理关系 装饰者模式:装饰者类,被装饰者类:装饰关系 适配器模式:转换关系 门面模式:这个非常常用,封装关系 享元模式:共享
行为型设计模式:
-
观察者模式
-
责任链模式
-
策略模式
-
迭代器模式
-
中介者模式
-
命令模式
-
状态模式
-
模版模式 ...
行为型设计模式,即是关注行为,进行不同类的责任划分,更关注类的相互作用,一个对象在运行时对其他对象产生影响。 观察者模式:观察者,被观察者 状态模式:根据状态进行行为 策略模式:不同策略的相互替换,不影响调用代码
整体理解
写出优雅的代码,除了要对基本的API熟悉,还需要对类分层、命名都要合理(后续打算写一篇关于常用命名的文章)。
而在代码内部,除了设计模式基本原则之外,熟练使用设计模式更能让自己的代码更加“专业”,更能让别人理解。
一般我们在开发一个功能之外,如果是“缝缝补补”的代码,这种基本无解,除了方法封装、命名优雅之外,也很难用到设计模式。 如果是独自承担一个模块,就需要很强的整体设计能力。
比如新写一个sdk:
sdk首先可能被设计成单例模式,然后初始化config一般使用builder模式。
然后接口回调,这个是观察者模式
如果里面有很多状态,很多类型,就可能涉及状态模式、策略模式、责任链模式
.....
实现功能一般中级开发工程师都能实现,写好代码就需要进行整体规划、设计,写出易于维护的代码,共勉。