您的位置:首页 > 其它

设计模式之模板方法模式、策略模式、命令设计模式

2015-09-17 12:47 337 查看
一、模板方法模式

模板方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法称做基本方法(primitive method);而将这些基本方法汇总起来的方法叫做模板方法(template method)。

抽象模板(AbstractTemplate):1、定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作。2、定义并实现了一个模板方法。这个模板方法一般是一个具体方法,步骤在相应的抽象操作中,推迟到子类实现。

具体模板(Concrete Template):1、实现父类所定义的一个或多个抽象方法。2、每一个抽象模板角色都可以有任意多个具体模板角色与之对应,而每一个具体模板角色都可以给出这些抽象方法的不同实现

二、策略模式

       GoF《设计模式》中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。该模式使得算法可独立于它们的客户变化。

抽象策略角色:策略类,通常由一个接口或者抽象类实现。
具体策略角色:包装了相关的算法和行为。
环境角色:持有一个策略类的引用,最终给客户端调用。
具体的实现方法:
首先,定义一个接口,在接口里有一个抽象的方法,可以叫做抽象决策。
然后,定义一些算法,分别用有一些类来实现这些接口,可以叫做具体策略类。
其次,定义一个类,将这些算法封装起来,可以叫做环境角色。
最后通过调用环境角色,在环境角色中分别调用具体策略类,实现最红的目的。
策略模式的好处是客户端不需要知道每一个算法具体的实现方法,只需要知道算法的名称,调用即可。

三、命令设计模式

  GoF《设计模式》中说道:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。
ConcreteCommand类:Command类的实现类,对抽象类中声明的方法进行实现。
Client类:最终的客户端调用类。
Invoker类:调用者,负责调用命令。
Receiver类:接收者,负责接收命令并且执行命令。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: