策略模式:
策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。
策略模式使得算法可以在不影响到客户端的情况下发生变化。使用策略模式可以把行为和环境分割开来。
环境类负责维持和查询行为类,各种算法则在具体策略中提供。由于算法和环境独立开来,算法的修改都不会影响环境和客户端
策略模式由三部分组成:
a: 抽象策略角色:策略类,通常由一个接口或者抽象类实现
b: 具体策略角色:包装了相关的算法和行为
c: 环境角色:持有一个策略类的引用,最终给客户端调用的。
一个简单运用策略模式的例子:
public interface IStrategy {
/**
* 抽象策略角色 策略类,通常由一个接口或者抽象类实现
* @param a
* @param b
* @return
*/
public String calculate(float a,float b);
}
public class AddStrategy implements IStrategy {
/**
* 具体策略角色:包装了相关的算法和行为
*/
@Override
public String calculate(float a, float b) {
// TODO Auto-generated method stub
float result=a+b;
return "相加结果为:" + result;
}
}
public class SubStrategy implements IStrategy {
/**
* 具体策略角色:包装了相关的算法和行为
*/
@Override
public String calculate(float a, float b) {
// TODO Auto-generated method stub
float result=a-b;
return "相减结果为:" + result;
}
}
public class ContextRole {
/**
* 环境角色,持有一个策略类的引用,最终给客户端调用的
*/
private IStrategy iStrategy;
public ContextRole(IStrategy iStrategy){
this.iStrategy=iStrategy;
}
public String calculate(float a,float b) {
return this.iStrategy.calculate(a, b);
}
}
public class Test {
/**
* Client
* @param args
*/
public static void main(String[] args) {
IStrategy iStrategy=new AddStrategy();
ContextRole contextRole=new ContextRole(iStrategy);
String result=contextRole.calculate(300, 200);
System.out.println(result);
iStrategy=new SubStrategy();
contextRole=new ContextRole(iStrategy);
result=contextRole.calculate(300, 200);
System.out.println(result);
}
}
相加结果为:500.0
相减结果为:100.0
分享到:
相关推荐
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件设计中,有时我们需要根据不同的场景或条件选择不同的算法或行为。策略模式允许我们将这些算法封装成独立的类,每个类代表一种策略,然后在运行...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中,我们创建表示各种策略的对象和一个行为根据...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在C++中,策略模式通常通过定义一系列算法类并让它们之间可以互换来实现。这些算法类都实现了一个公共接口,使得它们可以被相同的客户端代码调用,而...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或时间点执行不同算法的情况。策略模式允许我们将这些算法封装成独立的类,使得它们可以互换,从而提高...
在C#中,我们可以这样实现策略模式: 1. 首先,定义策略接口: ```csharp public interface IStrategy { void Execute(); } ``` 2. 然后,创建实现策略接口的具体策略类: ```csharp public class ...
C#面向对象设计模式 (行为型模式) Strategy 策略模式 视频讲座下载
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件工程中,当一个系统需要在不同时间执行不同的算法,或者当一个对象的行为需要随着它的内部状态或外部条件的变化而变化时,策略模式就能派上用场...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或时间点执行不同算法的情况。策略模式提供了一种将算法族封装到各自独立的类中,并让它们之间可以互相...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来执行不同算法的情况。策略模式就是为了解决这类问题而提出的,它将算法封装到独立的可互换的...
在策略模式中,有三个主要角色:策略接口(Strategy Interface)、具体策略类(Concrete Strategy Classes)和上下文(Context)。策略接口定义了所有支持的算法的公共接口,这样上下文就可以通过这个接口来调用这些...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 策略模式定义了一系列的算法,并将每一个算法封装起来,使...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。这种模式允许你使用算法族,而无需在代码中硬编码这些算法。通过将算法封装到具有共同接口的独立对象中,策略模式使得你可以根据需要灵活地切换算法,...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中,我们创建表示各种策略的对象和一个行为根据...
策略模式(Strategy)是软件设计模式中的一种行为模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常涉及定义一系列算法,并将每个算法封装起来,使得它们可以相互替换,同时使得算法的变化独立于使用它...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。...在"策略模式(strategy model)小实例一个"中,我们将看到如何通过策略模式实现不同排序算法的切换,从而更好地理解和应用这种模式。
《策略模式:理解与应用》 策略模式是软件设计中的一种行为模式,它允许在运行时选择算法或策略,提供了一种将算法封装在独立的可互换的类中的方式,使得程序在不修改原有代码的基础上,可以根据不同场景选择不同的...
而策略模式(Strategy Pattern)则是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用它的客户端。它主要用于处理那些具有多种行为的对象,可以根据具体情境选择不同...
### 策略模式 Strategy Pattern #### 概述 策略模式是一种行为设计模式,它使得算法可以在运行时被更改。这种模式允许一个类的行为或其算法在运行时根据需要进行改变,通过这种方式,我们可以轻松地扩展不同的算法...