[b]策略模式[/b]
是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。
策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。
一句话来形容:准备一组算法,并将每一个算法封装起来,使得他们可以互换
[b]策略模式的结构[/b]
策略模式涉及到三个角色:
[list]
[*]环境角色:持有一个Strategy类(策略类)的引用
[*]抽象策略角色:策略类,通常由一个接口或者抽象类实现
[*]具体策略角色:包装了相关的算法和行为
[/list]
[b]《三国演义》中的故事[/b]
诸葛亮的精囊妙计三条妙计
走乔国老的后门,求孙国太放人,请孙夫人退兵
赵云按计行事
环境角色:赵云由他来决定选择策略
抽象策略角色:(接口)精囊妙计按计行事(抽象方法)
具体策略角色:三条妙计(单独使用的)
[b]例子:一个策略模式的加减乘除[/b]
抽象策略角色: (精囊妙计) Operation抽象类(oper抽象方法)
具体策略角色: (三条妙计) 计算乘积,计算除法,计算加法,计算减法
环境角色: (赵云) 有一个策略类( Operation )的引用
[b]策略模式的优缺点:[/b]
[b]优点:[/b]
1.提供了管理相关的算法族的办法。
2.提供了可以替换继承关系的办法。
3.避免使用多重条件转移语句
[b]缺点:[/b]
1.客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
2.造成很多的策略类。
是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。
策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。
一句话来形容:准备一组算法,并将每一个算法封装起来,使得他们可以互换
[b]策略模式的结构[/b]
策略模式涉及到三个角色:
[list]
[*]环境角色:持有一个Strategy类(策略类)的引用
[*]抽象策略角色:策略类,通常由一个接口或者抽象类实现
[*]具体策略角色:包装了相关的算法和行为
[/list]
[b]《三国演义》中的故事[/b]
诸葛亮的精囊妙计三条妙计
走乔国老的后门,求孙国太放人,请孙夫人退兵
赵云按计行事
环境角色:赵云由他来决定选择策略
抽象策略角色:(接口)精囊妙计按计行事(抽象方法)
具体策略角色:三条妙计(单独使用的)
[b]例子:一个策略模式的加减乘除[/b]
抽象策略角色: (精囊妙计) Operation抽象类(oper抽象方法)
具体策略角色: (三条妙计) 计算乘积,计算除法,计算加法,计算减法
环境角色: (赵云) 有一个策略类( Operation )的引用
[b]策略模式的优缺点:[/b]
[b]优点:[/b]
1.提供了管理相关的算法族的办法。
2.提供了可以替换继承关系的办法。
3.避免使用多重条件转移语句
[b]缺点:[/b]
1.客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
2.造成很多的策略类。