您的位置:首页 > 其它

策略模式小记【原创】

2012-03-23 10:26 225 查看
最近在学设计模式,工作之余也看了一些书。怕以后忘了,对于每个设计模式,及时做个积累!

刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,妙计是放置在锦囊里,俗称就是锦囊妙计嘛,那赵云就是一个只是干活的人,从锦囊中取出妙计、执行的人。



如上图,诸葛亮给了赵云三个妙计(BackDoor等),分别实现IStrategy妙计接口,并实现接口里的operate()方法,即个妙计的具体内容。妙计得放在锦囊里,Context就是锦囊。它里面定义了一个妙计IStrategy类型变量,并有一个构造函数。客户端(调用者、赵云)向Context传入具体的妙计子类,并通过调用Context的operate方法,调用了锦囊类IStrategy的operate方法。而此时,由于传入参数是子类,所以实际上父类的operate方法已经被子类的具体operator方法所覆盖,体现出多态。

但是学完此模式,觉得有些时候此模式不宜单独使用。因为在这个模式里,客户端(赵云)需要知道要用哪个具体的妙计子类,需要将该子类传入Context,才能调用它的operate方法。有些时候甚至要在客户端判断该使用哪个子类。此时如果直接在客户端加入判断不好。应该与简单工厂相结合(要判断的时候),将判断传入具体子类的语句放在Context的构造函数中。

一句话概括:聚合关系,初始化传入对象,调用其方法!

注:本系列大部分例子来源自秦小波的《设计模式之禅》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: