asdio的学习园地

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

这段时间研究provider模式,顺便研究了策略模式,发现策略模式也是个比较简单的模式。简单记一下。

最简单的策略模式是涉及到四个类,调用者类,被调用者父类,两个或者两个以上继承于被调用者父类的子类。调用者类里面包含被调用者父类的引用,在构造函数里面加个被调用者类的参数。

用代码来表示更明白:

父类,定义抽象函数:

public class Strategy

{

public abstract string write()

{

//return some string;

}

}

---------------------------

多个子类,重载父类里面的抽象函数:

public class StrategyA:Strategy

{

public override string write()

{

return "I am A";//具体实现1

}

}

public class StrategyB:Strategy

{

public override string write()

{

return "I am B";//具体实现2

}

}

 

----------------------

调用父类策略类

public class Client

{

private Strategy _strategy;

public void Client(Strategy mystrategy)

{

_strategy=mystrategy;

}

//调用策略类里面的方法

public string DoSomething()

{

_strategy.write();

}

 

}

-----------------------

其他的类再来调用 client类,选择具体的策略

public class anthor

{

public string doA()

{

client c=new client(StrategyA  a);

return c.doSomething();//这里因为是调用StrategyA,返回的是 I am A;

}

}

===================================

其他:

组合,聚合,继承都可以实现代码复用。组合,聚合用多了更好用。

重载以及多态带给了子类更多的灵活性。

 

posted on 2009-01-21 11:15  帝之晓  阅读(289)  评论(1编辑  收藏  举报