设计模式及适用场景

一、命令模式

定义:

命令将一个请求封装为一个对象,从而使得可以使用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及可撤销的操作。

适用情况:

1、抽象出待执行的动作以参数化某对象,此模式是过程语言中的回调机制的一个面向对象的替代方法;

2、在不同的时刻指定、排列和执行请求;

3、支持取消操作;

4、支持修改日志,这样当系统崩溃时,这些修改可以重新被做一遍;

5、用构建在原语操作上的高层操作构造一个系统;

二、责任链模式

定义:

责任链是多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。讲这些对象连成一条链,并沿着这条链传递改请求,知道有一个对象处理它为止。

适用情况:

1、有多个的对象可以处理一个请求,哪个对象处理该请求在运行时刻自动确定;

2、在不明确指定接受者的情况下,向多个对象中的一个提交一个请求;

3、可处理一个请求的对象集合应被动态指定;

三、观察者模式

观察者模式定义对象间的一种一对多的以来关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知,并自动更新。

适用情况:

1、当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两者封装在独立地对象中以使他们可以各自独立地改变和复用;

2、当对一个对象的改变同时需要改变其他对象,而不知道具体有多少个对象待改变时;

3、当一个对象必须通知其他对象,他又不能假定其他对象是谁,即:不希望这些对象是紧耦合;

四、策略模式

策略定义一系列的算法,把它们一个个封装起来,并且使他们可以相互替换。此模式使得算法可以独立于使用他们的客户而变化。

适用情况:

1、许多相关的类仅仅是行为有异,策略提供了一种用多个行为中的一个行为来配置一个类的方法;

2、需要使用一个算法的不同变体。例如,定义一些反应不同空间的空间/时间权衡的算法,当这些变体实现为一个算法的类层次时,可以使用策略模式;

3、算法使用客户不应该知道的数据。可以使用策略模式以避免暴露复杂的、与算法相关的数据结构;

4、一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现,将相关的条件分支移入他们各自的Strategy类中


上一篇:带你玩转vue——简约清晰的vue封装axios(ajax)方法


下一篇:带你玩转vue——DOM节点v-if判断导致的生命周期问题