策略模式的目的是定义一系列算法,把它们封装起来,并且使它们可以相互替换.
本模式使得算法可以独立于它的客户而变话.
-
-
-
-
-
-
public interface Strategy {
-
public void algorithmInterface();
- }
-
-
-
-
-
-
-
public class ConcreteStrategyA implements Strategy {
-
public void algorithmInterface() {
-
System.out.println("Called ConcreteStrategyA.algorithmInterface()");
- }
- }
-
-
-
-
-
-
-
public class ConcreteStrategyB implements Strategy {
-
public void algorithmInterface() {
-
System.out.println("Called ConcreteStrategyB.algorithmInterface()");
- }
- }
-
-
-
-
-
-
-
public class ConcreteStrategyC implements Strategy {
-
public void algorithmInterface() {
-
System.out.println("Called ConcreteStrategyC.algorithmInterface()");
- }
- }
-
-
-
-
-
-
-
public class Context {
- Strategy strategy;
-
-
public Context(Strategy strategy) {
-
this.strategy = strategy;
- }
-
-
public void contextInterface() {
- strategy.algorithmInterface();
- }
- }
-
-
-
-
-
-
-
public class Client {
-
public static void Main(String[] args) {
-
Context c = new Context(new ConcreteStrategyA());
- c.contextInterface();
-
-
Context d = new Context(new ConcreteStrategyB());
- d.contextInterface();
-
-
Context e = new Context(new ConcreteStrategyC());
- e.contextInterface();
- }
- }
应用场合:
1、多个类的分别只是在于行为的不同。
2、你需要对行为的算法做很多的变动。
3、客户不知道算法要使用的数据。
- 大小: 9.6 KB
分享到:
相关推荐
【策略模式】是一种设计模式,它的核心思想是将不同的算法或行为封装成独立的类,这些类具有统一的接口,从而使客户端可以灵活地选择并使用其中的任何一种算法,而无需关心具体实现的细节。这种模式可以有效地避免...
策略模式是设计模式的一种,它允许我们在运行时动态地改变对象的行为。在这个"php设计模式-策略模式-例题学习"的例子中,我们将深入理解策略模式的运用及其在PHP中的实现。 首先,让我们来看看核心的类和接口: ...
void useStrategy() { strategy->execute(); } }; ``` 在提供的压缩包中,可能包含了实现上述概念的C++代码。源码文件可能会展示如何实例化上下文对象并根据需要切换策略,例如通过调用`setStrategy`方法。UML类图...
_strategy->do_algorithm(data); } }; ``` 这里,`Strategy`是策略接口,`ConcreteStrategyA`和`ConcreteStrategyB`是具体策略类,它们都实现了`do_algorithm`方法。`Context`类持有`Strategy`的指针,并通过`...
首先,策略模式由三个主要组成部分构成:上下文(Context)、策略(Strategy)接口和具体策略(Concrete Strategy)。上下文是使用策略的对象,它维护一个对策略的引用,并调用策略的接口来执行算法。策略接口定义了一组...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或时间点执行不同算法的情况。策略模式允许我们将算法封装到独立的策略类中,并在需要的时候动态选择...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。这种模式允许你使用算法族,而无需在代码中硬编码这些算法。通过将算法封装到具有共同接口的独立对象中,策略模式使得你可以根据需要灵活地切换算法,...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在电影订票程序中,策略模式的应用能够灵活地处理不同的定价策略,比如普通票价、会员优惠价、节假日特惠等。通过这种方式,我们可以避免硬编码各种...
c++设计模式-行为型模式-策略模式;qt工程;c++简单源码; 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于...
在Strategy模式中,我们将每种算法封装为一个策略类,每个策略类都实现了同一接口或抽象类,这样确保所有策略具有相同的契约。在上述案例中,我们可以创建一个`TaxStrategy`接口,包含计算税额的方法,然后为每个...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或时间点执行不同算法的情况。策略模式提供了一种将算法封装到独立的可互换策略对象中的方式,从而使...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常用于替换硬编码的条件语句,使代码更加灵活、可扩展和易于维护。下面我们将详细探讨策略模式的核心概念、实现方式以及在实际...
### 策略模式-java #### 模式定义与背景 策略模式是一种行为设计模式,它使得算法可以独立于使用它的客户端而变化。简而言之,这种模式允许你在运行时改变对象的行为。策略模式的核心思想是将算法或者行为封装成一...
1. **策略(Strategy)**:这是策略模式中的一个核心概念,定义了算法家族,封装了算法或行为。策略接口必须是统一的,从而使得这些算法可以互相替换。 2. **具体策略(ConcreteStrategy)**:实现了一个策略接口的...
void executeStrategy() { strategy->execute(); } }; ``` 上下文类不关心具体策略的实现,只关心如何调用策略。 4. **客户端代码(Client)**:客户端代码创建具体策略对象,并将其传递给上下文。例如,`main....
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中,我们创建表示各种策略的对象和一个行为根据...
C#面向对象设计模式 (行为型模式) Strategy 策略模式 视频讲座下载
return strategy->execute(num1, num2); } }; ``` 在这个例子中,`Strategy`是策略接口,`ConcreteStrategyA`和`ConcreteStrategyB`是具体策略,`Context`是上下文。`Context`持有一个`Strategy`指针,并通过`...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来执行不同算法的情况。策略模式提供了一种将算法族封装到各自独立的类中,并在运行时选择具体...