[设计模式-行为型]策略模式(Strategy)

一句话

在一个类的对象中维护策略的类的对象.

看起来和状态模式很类似。

概括





解析

STRATEGY—跟不同类型的MM约会,要用不同的策略,有的请电影比较好,有的则去吃小吃效果不错,有的去海边浪漫最合适,但目的都是为了得到MM的芳心,我的追MM锦囊中有好多Strategy哦。
  策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。


实例

产品的生产有不同的原料组合策略。

包含的文件:

一个策略的抽象类(Strategy.java)

两个策略的实现类(StrategyImpl1.java, StrategyImpl2.java)

产品类 (Product.java)

测试主类 (TestMain.java)


/**   
 * @author oscar999   
 * @date 2015-1-8
 * @version V1.0   
 */
package designptn.strategy;

public abstract class Strategy {
	public abstract void method();
}

/**   
 * @author oscar999   
 * @date 2015-1-8
 * @version V1.0   
 */
package designptn.strategy;

/**
 * @author Administrator
 * 
 */
public class StrategyImpl1 extends Strategy {

	@Override
	public void method() {
		// TODO Auto-generated method stub
		System.out.println("Strategy 1");
	}

}

/**   
 * @author oscar999   
 * @date 2015-1-8
 * @version V1.0   
 */
package designptn.strategy;

/**
 * @author Administrator
 * 
 */
public class StrategyImpl2 extends Strategy {

	@Override
	public void method() {
		// TODO Auto-generated method stub
		System.out.println("Strategy 2");
	}

}

/**   
 * @author oscar999   
 * @date 2015-1-8
 * @version V1.0   
 */
package designptn.strategy;

public class Product {
	Strategy stra;

	public Product(Strategy stra) {
		this.stra = stra;
	}
	
	public void doMethod(){
		stra.method();
	}
}

/**   
 * @author oscar999   
 * @date 2015-1-8
 * @version V1.0   
 */
package designptn.strategy;

/**
 * @author Administrator
 * 
 */
public class TestMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Product product = new Product(new StrategyImpl1());
		product.doMethod();
		
		product = new Product(new StrategyImpl2());
		product.doMethod();
	}

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oscar999

送以玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值