Define a family of algorithms, encapsulate each one, and make them interchangeable.
定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。
public interface Strategy {
public void doSomething();
}
public class ConcreteStrategy1 implements Strategy {
@Override
public void doSomething() {
System.out.println("ConcreteStrategy1 doSomething.");
}
}
public class ConcreteStrategy2 implements Strategy {
@Override
public void doSomething() {
System.out.println("ConcreteStrategy2 doSomething.");
}
}
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void doAnything() {
this.strategy.doSomething();
}
}
public class Client {
public static void main(String[] args) {
Strategy strategy = new ConcreteStrategy1();
Context context = new Context(strategy);
context.doAnything();
}
}
策略模式的优点
(1)算法可以自由切换
(2)避免使用多重条件判断
(3)扩展性好
策略模式使用的场景
(1)多个类只有在算法或行为上稍有不同的场景
(2)算法需要自由切换
(3)需要屏蔽算法规则的场景
策略模式的扩展
public enum Calculators {
ADD("+") {
public int exec(int a, int b) {
return a+b;
}
},
SUB("-") {
public int exec(int a, int b) {
return a-b;
}
};
String value = "";
private Calculators(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
public abstract int exec(int a, int b);
}
出自 设计模式之禅 秦小波
分享到:
相关推荐
设计模式-策略模式-c++版 压缩包中有build好的程序和工程设计到的所有类的源码,还有一个Uml类图
java常用设计模式-策略模式
设计模式-策略模式源代码 .net,策略模式,模式,设计模式 文件包中有UML策略模式详解图
设计模式-策略模式(Strategy)结合Android小知识讲解,简单明了
设计模式-策略模式(讲解及其实现代码)
设计模式--策略模式java例子
c++设计模式-行为型模式-策略模式;qt工程;c++简单源码; 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于...
设计模式--策略模式StrategyPattern
设计模式---策略者模式---根据《Head First 设计模式》自己实现
JAVA-设计模式-行为型模式-策略模式
NULL 博文链接:https://xieye.iteye.com/blog/1070202
Java设计模式,策略模式的Demo,具体的思想与实现有很多讲得很好的老师,我是看厉风行老师的视频学的,讲得不错,简单易懂
在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...
java设计模式--策略模式 HeadFirst书中的 装饰者模式
策略模式思想简单实现,初学者可看看。 设计模式 策略模式 Strategy
这是最为经典的东南大学出版社的《深入浅出设计模式》的第一章策略模式的ios软件实现! 陆续我还会将其余章源代码与大家分享。
1.当你有很多类似的类,但它们执行某些行为的方式不同时,请使用此 2.使用该模式将类的业务逻辑与算法的实现细节隔离开来,这些算法在 3.当你的类具有大量的条件运