何谓策略模式?
本人的理解是:一个对象要完成一件事情,有很多种实现策略。为了把对象与实现方式解耦,可以使用策略模式(Strategy)
模式的组成
环境类(Context):用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。
抽象策略类(Strategy):定义所有支持的算法的公共接口。 Context使用这个接口来调用某ConcreteStrategy定义的算法。
具体策略类(ConcreteStrategy):以Strategy接口实现某具体算法。
写一段策略模式的伪代码 :
Interface 砍树类(策略接口)
{
砍树();
}
class 锯子砍树 implements 砍树类 ---具体的策略类
{
砍树(){
用锯子锯……
}
}
class 电锯砍树 implements 砍树类 ---具体的策略类
{
砍树(){
用电锯锯……
}
}
class 指甲刀砍树 implements 砍树类 ---具体的策略类
{
砍树(){
用指甲刀剪……
}
}
class 环境类(context) ---一个环境类,来"智能"选择具体的策略
{
private 砍树类(一个引用)
设置策略方法(砍树的具体类){
砍树类 = 砍树的具体类
}
我要砍树(){
砍树类.砍树();
}
}