admin管理员组文章数量:1566222
一句话
在一个类的对象中维护策略的类的对象.
看起来和状态模式很类似。
概括
解析
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();
}
}
版权声明:本文标题:[设计模式-行为型]策略模式(Strategy) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1725701653a1037543.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论