策略模式小记【原创】
2012-03-23 10:26
225 查看
最近在学设计模式,工作之余也看了一些书。怕以后忘了,对于每个设计模式,及时做个积累!
刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,妙计是放置在锦囊里,俗称就是锦囊妙计嘛,那赵云就是一个只是干活的人,从锦囊中取出妙计、执行的人。
![](http://pic002.cnblogs.com/images/2012/298544/2012032320094148.jpg)
如上图,诸葛亮给了赵云三个妙计(BackDoor等),分别实现IStrategy妙计接口,并实现接口里的operate()方法,即个妙计的具体内容。妙计得放在锦囊里,Context就是锦囊。它里面定义了一个妙计IStrategy类型变量,并有一个构造函数。客户端(调用者、赵云)向Context传入具体的妙计子类,并通过调用Context的operate方法,调用了锦囊类IStrategy的operate方法。而此时,由于传入参数是子类,所以实际上父类的operate方法已经被子类的具体operator方法所覆盖,体现出多态。
但是学完此模式,觉得有些时候此模式不宜单独使用。因为在这个模式里,客户端(赵云)需要知道要用哪个具体的妙计子类,需要将该子类传入Context,才能调用它的operate方法。有些时候甚至要在客户端判断该使用哪个子类。此时如果直接在客户端加入判断不好。应该与简单工厂相结合(要判断的时候),将判断传入具体子类的语句放在Context的构造函数中。
一句话概括:聚合关系,初始化传入对象,调用其方法!
注:本系列大部分例子来源自秦小波的《设计模式之禅》
刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,妙计是放置在锦囊里,俗称就是锦囊妙计嘛,那赵云就是一个只是干活的人,从锦囊中取出妙计、执行的人。
![](http://pic002.cnblogs.com/images/2012/298544/2012032320094148.jpg)
如上图,诸葛亮给了赵云三个妙计(BackDoor等),分别实现IStrategy妙计接口,并实现接口里的operate()方法,即个妙计的具体内容。妙计得放在锦囊里,Context就是锦囊。它里面定义了一个妙计IStrategy类型变量,并有一个构造函数。客户端(调用者、赵云)向Context传入具体的妙计子类,并通过调用Context的operate方法,调用了锦囊类IStrategy的operate方法。而此时,由于传入参数是子类,所以实际上父类的operate方法已经被子类的具体operator方法所覆盖,体现出多态。
但是学完此模式,觉得有些时候此模式不宜单独使用。因为在这个模式里,客户端(赵云)需要知道要用哪个具体的妙计子类,需要将该子类传入Context,才能调用它的operate方法。有些时候甚至要在客户端判断该使用哪个子类。此时如果直接在客户端加入判断不好。应该与简单工厂相结合(要判断的时候),将判断传入具体子类的语句放在Context的构造函数中。
一句话概括:聚合关系,初始化传入对象,调用其方法!
注:本系列大部分例子来源自秦小波的《设计模式之禅》
相关文章推荐
- 【原创】从策略模式闲扯到lambda表达式
- 原创 策略设计模式实例(欢迎指正交流)
- 策略模式之C#版本(原创翻译版本)
- 策略模式
- 设计模式之策略模式
- 【Java设计模式】策略模式
- 设计模式-策略模式
- 设计模式--策略模式--UML图
- 设计模式之策略模式(第三篇,转载)
- 设计模式--策略模式
- Java设计模式(13)行为型:策略模式
- 《Head first设计模式》学习笔记 – 策略模式
- java设计模式之策略模式
- java设计模式之策略模式
- 简单的策略模式,类模版
- 策略模式理解
- 策略设计模式(编写属于自己的JDBC框架)
- 策略模式简单例子
- 第 1 章 策略模式【Strategy Pattern】
- 策略模式