设计模式:策略模式-让你可以用不同的笔写作业
2013-06-12 09:54
204 查看
策略模式,相信大家都不很陌生,但是对于初学者,可能不是很明白。
现在由我给大家讲讲策略模式。
根据我的理解,大家可以把策略模式的使用想象成一个人要写作业,写作业可以用不同的笔,这里不同的笔就是不同的策略了。
下面给出示例,逐一解释。
Tools.java这个类就是抽象的策略角色,也就是笔这个抽象角色
Pen.java这个是一个具体的策略,钢笔
Pencil.java 这个是一个具体的策略,铅笔
BallPointPen.java 这个是一个具体的策略,圆珠笔
策略的抽象角色和策略的一些具体实现我们都定义好了
下面我们还缺少使用这些策略的角色,也就是策略模式当中的 环境角色。
环境角色应该持有一个抽象策略接口的引用。
示例:Person.java
策略模式的使用:
UseCase.java
现在由我给大家讲讲策略模式。
根据我的理解,大家可以把策略模式的使用想象成一个人要写作业,写作业可以用不同的笔,这里不同的笔就是不同的策略了。
下面给出示例,逐一解释。
Tools.java这个类就是抽象的策略角色,也就是笔这个抽象角色
public interface Tools { public void write(); }
Pen.java这个是一个具体的策略,钢笔
public class Pen implements Tools { @Override public void write() { System.out.println("我用钢笔写作业"); } }
Pencil.java 这个是一个具体的策略,铅笔
public class Pencil implements Tools { @Override public void write() { System.out.println("我用铅笔写作业"); } }
BallPointPen.java 这个是一个具体的策略,圆珠笔
public class BallPointPen implements Tools { @Override public void write() { System.out.println("我用圆珠笔写作业"); } }
策略的抽象角色和策略的一些具体实现我们都定义好了
下面我们还缺少使用这些策略的角色,也就是策略模式当中的 环境角色。
环境角色应该持有一个抽象策略接口的引用。
示例:Person.java
public class Person { private Tools tools; public Tools getTools() { return tools; } public void setTools(Tools tools) { this.tools = tools; } public Person(Tools tools) { this.tools = tools; } public void write() { this.tools.write(); } }
策略模式的使用:
UseCase.java
public class UseCase { public static void main(String[] args) { Person person = new Person(new Pen()); person.write(); person.setTools(new Pencil()); person.write(); } }
相关文章推荐
- (一)委托模式简介 委托模式是基本的设计模式之一。委托,即是让另一个对象帮你做事情。 许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。 委托模式使得我们可以用聚合
- 设计模式:策略模式(对象的某个行为,在不同的场景中,有不同的实现算法)
- 设计模式学习之策略模式
- 关于.NET Framework中的设计模式--应用策略模式为List排序
- 策略设计模式--学习笔记
- 设计模式——策略模式
- c++设计模式之策略模式
- 设计模式之策略模式
- [设计模式]策略模式
- 【Java设计模式】策略模式
- 设计模式--策略模式
- 设计模式—策略模式
- Head First 设计模式第一章 ----策略模式
- 设计模式--行为模式--策略模式--Java
- PHP设计模式:策略模式
- java设计模式之策略模式
- java设计模式【策略模式】
- Python设计模式(十四)【策略模式】
- Java23种设计模式之策略模式
- 设计模式之——策略模式