Java设计模式-策略模式
来源:互联网 发布:免费手机打字赚钱软件 编辑:程序博客网 时间:2024/05/05 07:21
前言
一年前开始从c语言编程转站到java语言编程,突然发现很多方式不一样,从过程式到OO式,思维一下在完成没有转变过来,即使已经编程了一年时间,却发现对Java的设计模式可以说是一无所知,现在开始学习设计模式,基于《Head First设计模式》。
策略模式
定义:策略模式主要是为了定义算法族,分别封装起来,让算法之间可以互相替换,并让算法的变化独立于使用其算法的用户。
举例:书上经典例子。
如何支持不同类型的鸭子Duck的不同行为,而且可以动态改变行为?
public abstract class Duck {
class flyBehavior fly;
class QuackBehavior quack;
}
public interface QuackBehuavior{
public void quack();
}
public interface FlyBehavior{
public void fly();
}
1个抽象类和2个接口,分别将Duck抽象出来,并且将其不同行为也抽象出来。这个时候定义到任何具体Duck类,都可以定义自己的fly和quack行为。并且通过set和get方式改变行为。如
public class FlyNoway implement FlyBehavior {
public void fly() {
print "Fly without any";
}
}
public class Quack implement QuackBehavior {
...
}
public class ModelDuck extends Duck {
public ModelDuck() {
fly = new FlyNoway()
quack = new Quack();
}
public void setFly(FlyBehavior fly) {
this.fly = fly;
}
...
}
这样fly和quack的行为可以动态根据set方法来改变。
策略模式涉及到几个OO设计原则:
1)多用组合,少用继承:好处是,可以动态扩展各类行为
2)针对接口编程,不针对实现编程:利于扩展
3)封装变化:减少以后的需求,对现有代码的修改。
总结
策略模式的实现主要是将需要动态变化的算法(即变化的行为,如fly和quack)使用组合方式写入主体(Duck)中。
PS:请注意体会并在实践中应用。
- Java设计模式-策略模式
- Java设计模式 -- 策略模式
- java设计模式-----策略模式
- java 设计模式-策略模式
- java设计模式--策略模式
- java设计模式-策略模式
- java设计模式-策略模式
- java设计模式--策略模式
- java设计模式---策略模式
- java设计模式---策略模式
- java设计模式---策略模式
- 【Java设计模式】策略模式
- java设计模式--策略模式
- Java设计模式----策略模式
- Java设计模式------------策略模式
- Java设计模式 - 策略模式
- java设计模式---策略模式
- java设计模式-策略模式
- Oracle数据库备份与还原命令
- Leetcode 2SUM-3SUM-4SUM
- 安卓Andriod使用入门(九)【悬浮窗菜单】
- cookie和session 详析
- django学习笔记(一)
- Java设计模式-策略模式
- 搜题
- js中的event对象。
- 05-javascript window对象的属性
- 满满的都是迷茫
- java学习笔记应用技术(二)
- libsvm训练样本格式整理及idf计算
- 是进是退,给自己个说法————燕十八
- CodeForces515C_Drazil and Factorial