Boolan 第十一周 设计模式(一)

什么是设计模式?
“每一个模式描述了一个在我们周围不断重复发生的问题,
以及该问题的解决方案的核心。这样,你就能一次又一次
地使用该方案而不必做重复劳动”。
——Christopher Alexander

软件设计的金科玉律: ** 复用 **
其实就是 复用+可扩展
详细来讲,就是面对新的需求以前的代码不修改(复用),而可以增加新的文件(可扩展)以适应新的需求。

1 Template Method
定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。

Boolan 第十一周 设计模式(一)_第1张图片
Template Method

使用Template Method的时候,后分配Derived类对象,并且向上转型为Based指针,Based类指针调用函数,并利用虚函数跳转到Derived类override的函数,调用完成回到Based的作用域。
** 需要注意 **:把需要让用户实现的函数声明为虚函数,不需要重写的部分声明为普通成员函数,虚函数的作用域在Derived中,而普通成员函数的作用域在Based.

2 Strategy
定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。

Boolan 第十一周 设计模式(一)_第2张图片
Strategy

这是软件设计的基本思路,具体类型依赖抽象类,每一个具体的操作封装成类,只需用指针动态调用。

3 Observer
Observer 模式应该可以说是应用最多、影响最广的设计模式之一,在系统开发架构设计中有着很重要的地位和意义。
Observer模式的意图是在对象之间定义一种一对多的依赖关系,当一个对象的状态改变时,所有依赖者都将得到通知并自动更新。

Boolan 第十一周 设计模式(一)_第3张图片
Observer

4 Decorator
过于继承链的过度膨胀,会使代码臃肿而难以修改,根据派生出的子类的功能,对继承关系进行分离,使用Decorator的一个中间层。

Boolan 第十一周 设计模式(一)_第4张图片
Decorator

Decorator内部有一个Component的指针,使用动态绑定用调用一部分的功能,实际上把一整块的继承树划分为两个部分了。黄色部分都是可以扩展的!
特别的是Decorator is-a Component ,又包含一个 Component的指针,这是很巧妙的做法。

5 Bridge
与Decorator类型,只是在功能上和责任划分上细分,将抽象部分(业务功能)与实部分(平台实现)分离,使它们都可以独立地变化。

Boolan 第十一周 设计模式(一)_第5张图片
Bridge

你可能感兴趣的:(Boolan 第十一周 设计模式(一))