码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之策略模式

时间:2014-10-01 02:18:00      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:策略模式   java   

什么是策略模式?

Strategy pattern is mainly about using different algorithm at different situation.

策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
策略模式的好处在于你可以动态的改变对象的行为。
一般的,策略模式主要分为以下三个角色: 
1.环境角色(Context):持有一个策略类引用 
2.抽象策略(Strategy):定义了多个具体策略的公共接口,具体策略类中各种不同的算法以不同的方式实现这个接口;Context使用这些接口调用不同实现的算法。一般的,我们使用接口或抽象类实现。 

3.具体策略(ConcreteStrategy):实现抽象策略类中的相关的算法或操作。 

/**
 * 策略模式首先定义了一个接口行为,实现了接口的子类有不同的行为实现 然后再一个场景类中维护了一个指向接口类的引用。 这样在不同的场景下调用不同的
 * 行为算法来处理
 */
interface Strategy {
	// 定义接口方法
	public void processPrice(int price);
}
// VIP待遇
class Vip implements Strategy {
	public void processPrice(int price) {
		System.out.println("VIP用" + price + "元坐在VIP房");
	}
}
// 普通待遇
class Ordinary implements Strategy {
	public void processPrice(int price) {
		System.out.println("Ordinary用" + price + "元坐在普通房");
	}
}
class Situation {
	private Strategy strategy;
	public Situation(Strategy strategy) {
		this.strategy = strategy;
	}
	public void handConsumer(int price) {
		this.strategy.processPrice(price);
	}
}
public class Main {
	public static void main(String[] args) {
		Ordinary ord = new Ordinary();
		Vip vip = new Vip();
		Situation s1 = new Situation(ord);
		Situation s2 = new Situation(vip);
		s1.handConsumer(10);
		s2.handConsumer(10);
	}
}


设计模式之策略模式

标签:策略模式   java   

原文地址:http://blog.csdn.net/lgcssx/article/details/39702779

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!