策略模式 Java
来源:互联网 发布:苹果7为什么4g网络很慢 编辑:程序博客网 时间:2024/06/05 13:34
作用: 策略模式定义了算法族,分别封装起来,让算法和对象分开来,使得算法可以独立于使用它的客户而变化
方法:
1、通常将主类中会随对象不同而变化的算法(方法)抽离出来,建立一组新的接口类,并作为主类的成员,以便实现算法的多态性;
2、针对算法变化分别设计接口类,例如鸭子的叫声(QuackBehavior)会随不同种类而有所区别(嘎嘎、吱吱、不叫),每种叫声分别定义quack()方法,并作为一个叫声类实现QuackBehavior;
3、在鸭子的具体实现类(例如灰鸭),对叫声、能否飞进行实现,如:QuackBehavior quackBehavior = new Quack();
4、在主类中声明setQuackBehavior方法,即可在运行时动态修改其叫声类型
具体方法可参看下述代码:
//定义主类,并将变化方法独立抽离成接口类 public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
public Duck(){}
public void setQuackBehavior(QuackBehavior quackBehavior) {
}
public void performQuack() {
//通过调用成员quack的quack()方法,实现叫声算法的封装
quackBehavior.quack();
}
}
//将能否飞与叫声定义成接口类 public interface FlyBehavior {
public void fly();
} public interface QuackBehavior {
public void quack();
}
//实现叫声接口类,并定义可能的叫声算法
public class MuteQuack implements QuackBehavior {
@Override
public void quack() {
System.out.println("<<Silence>>");
}
}
//对于具体的鸭子类型,在其构造器中实现其叫声及飞行 public class MallardDuck extends Duck {
public MallardDuck() {
quackBehavior = new Quack();
flyBehavior = new FlyWithWings();
}
}
具体过程可参看:http://blog.csdn.net/yan465942872/article/details/6300696
- java策略模式
- java中的策略模式
- Java策略模式(Strategy)
- java笔记 策略模式
- java 策略模式
- java 策略模式
- Java策略模式笔记
- Java策略模式回顾
- 策略模式----Java
- 策略模式-java实现
- JAVA策略模式
- 策略模式--java
- java策略设计模式
- java策略模式
- java策略模式
- java策略模式实例
- java设计模式---策略
- java策略设计模式
- 【C命令行参数】main函数的参数含义
- 算法训练 区间k大数查询
- HDU 1176 免费馅饼 (动态规划)
- javascript字符串
- SQL连接查询2 外连接(左右联接查询)
- 策略模式 Java
- java的几种对象(PO,VO,DAO,BO,POJO)解释
- 代理模式
- springboot @import @importResource 注解使用方式
- 颠覆你的思维,探寻人类发展史
- 自动化邮件报告平台-邮件发送highchart图表
- 《C和指针》练习题~6.18-2 del_substr()
- LeetCode 145. Binary Tree Postorder Traversal java solution
- stm32f103的11个定时器详解