`
543089122
  • 浏览: 153156 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

简单_策略模式(Strategy)

 
阅读更多
 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.)



package design.strategy;
/** 
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-1-12 下午08:36:11 <br>
 * 
 */
public class Test {
	public static void main(String[] args) {
		/**
		 * 策略模式   和桥梁模式很像,
		 * 不过桥梁模式是为了解决多维度扩展的问题,而策略模式解决的依然只是一个纬度,
		 * 这可能是他们本质的区别
		 * 
		 * Strategy:定义一个策略接口,所有实现该策略接口的类为具体的策略类
		 * Context:策略模式的上下文类,内部维护一个Strategy的实例,这样就能运行时执行指定的策略算法。
		 * ConcreateStratA/ConcreateStratB:具体的策略实现类
		 * 
		 * 策略类的应用:
		 * 1、运行时动态改变具体实现策略
		 * 2、对客户端隐藏具体的实现细节
		 * 
		 * 在JDK中java.util.Comparator/javax.servlet.http.HttpServlet
		 * /javax.servlet.Filter#doFilter()即运用了策略模式
		 */
		Context context = new Context(new ConcreateStratA());
		context.contextInterface();
		
		context = new Context(new ConcreateStratB());
		context.contextInterface();
	}
}

package design.strategy;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-1-12 下午08:37:57 <br>
 * Strategy接口定义了一个策略,凡是实现了该接口的类都具有算法的功能 Comparable接口也是策略模式,
 * Comparable接口就是定义了一个比较器,凡是实现了该比较器的类都具有比较的功能。
 * 但是java.util.Comparator也是和java.lang.Comparable一样,那为什么要弄2个同样都具有比较器的接口呢?
 * java.util.Comparator是为了动态实现比较器而生的
 */
public interface Strategy {
	void algorithmInterface();
}

package design.strategy;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-1-12 下午08:37:37 <br>
 * 
 */
public class Context {
	protected Strategy strategy;

	public Context(Strategy strategy) {
		this.strategy = strategy;
	}

	public void contextInterface() {
		this.strategy.algorithmInterface();
	}
}

package design.strategy;
/** 
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-1-12 下午08:38:54 <br>
 * 策略接口的实现类
 */
public class ConcreateStratA implements Strategy{

	public void algorithmInterface() {
		System.out.println("算法A");
	}
}

package design.strategy;
/** 
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-1-12 下午08:38:54 <br>
 * 
 */
public class ConcreateStratB implements Strategy{

	public void algorithmInterface() {
		System.out.println("算法B");		
	}
}
  • 大小: 4.9 KB
0
1
分享到:
评论

相关推荐

    JAVA_Strategy.rar_java 策略模式、工厂模式、桥接模式_severalgdo_strategy

    在"JAVA_Strategy.rar"这个压缩包中,severalgdo_strategy可能包含了一些示例代码或者教程,用于演示如何在Java项目中实施策略模式、工厂模式和桥接模式。解压并学习这些资源,可以帮助你深入理解这些模式的实现细节...

    C++设计模式课件4_策略模式.pdf

    - **Context**:使用策略模式的客户端,它维护一个对Strategy对象的引用,可以通过这个引用调用具体的策略方法。 **示例图解**: ``` +----------------+ +-----------------------+ +------------------+ | ...

    设计模式_行为型_策略模式.md

    下面是策略模式的一个简单示例代码,使用Java编写: ```java // 抽象策略角色 public interface Strategy { // 策略模式的运算法则 void doSomething(); } // 具体策略角色 public class ConcreteStrategy1 ...

    jisuanqi.zip_加减乘除_策略模式_简单计算器

    "jisuanqi.zip_加减乘除_策略模式_简单计算器"这个压缩包文件中包含了一个使用策略模式实现的简单计算器应用。策略模式是设计模式中的一种行为模式,它允许在运行时动态地选择算法或策略,从而使程序更具灵活性。 ...

    【Java设计模式】(2)策略模式Strategy

    下面是如何使用Java实现策略模式的一个简单示例: ```java // 策略接口 public interface PaymentStrategy { void pay(double amount); } // 具体策略1:在线支付 public class OnlinePayment implements ...

    设计模式C++学习之策略模式(Strategy)

    下面是一个简单的策略模式示例: ```cpp // 策略接口 class Strategy { public: virtual ~Strategy() {} virtual int execute(int num1, int num2) = 0; }; // 具体策略1 class ConcreteStrategyA : public ...

    设计模式之策略模式(Strategy Pattern)

    在策略模式中,有三个主要角色:策略接口(Strategy Interface)、具体策略类(Concrete Strategy Classes)和上下文(Context)。策略接口定义了所有支持的算法的公共接口,这样上下文就可以通过这个接口来调用这些...

    策略模式(strategy)

    以下是一个简单的策略模式示例: ```java // 策略接口 public interface MovementStrategy { void move(); } // 具体策略类 public class QuickMoveStrategy implements MovementStrategy { @Override public ...

    设计模式-策略模式(Strategy)

    下面是一个简单的策略模式示例: ```java // 策略接口 public interface ShippingStrategy { double calculateShippingCost(double weight); } // 具体策略类1:平邮策略 public class NormalShipping implements ...

    详解SpringBoot结合策略模式实战套路

    SpringBoot结合策略模式实战套路 策略模式是一种常用的设计模式,它可以使我们的代码更加灵活、可维护和可扩展。在SpringBoot项目中,策略模式可以与依赖注入机制相结合,实现更加灵活的业务逻辑处理。在本文中,...

    设计模式之策略模式源码(c#实现)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中,我们创建表示各种策略的对象和一个行为根据...

    策略模式(Strategy)

    在`Strategy.docx`文档中,可能会详细讲解策略模式的原理、优缺点、适用场景以及如何在代码中实现策略模式。通常,它会包含以下几个部分: - **优点**:策略模式提供了更好的可扩展性和可维护性,因为算法的变化...

    行为型——Strategy(策略模式)

    - 避免过度使用策略模式,如果只是简单的条件分支,可能更适合使用条件语句。 在Java或其他面向对象语言中,策略模式的实现通常涉及到接口的定义和实现,以及在上下文类中使用这些接口。在给定的“strategy”压缩包...

    [行为模式] head first 设计模式之策略模式(strategy)

    策略模式通常由三部分组成:上下文(Context)、策略接口(Strategy)和具体策略类(Concrete Strategy)。上下文是使用策略的对象,它定义了与策略交互的接口,而策略接口定义了策略的公共操作。具体策略类实现了...

    设计模式 - 策略模式(C++实例)

    以下是一个简单的C++策略模式实现示例: ```cpp // 策略接口 class Strategy { public: virtual void execute() = 0; }; // 具体策略A class ConcreteStrategyA : public Strategy { public: void execute() ...

    策略模式代码示例

    以下是一个简单的策略模式代码示例: ```java // 策略接口 public interface Strategy { void execute(); } // 具体策略A public class StrategyA implements Strategy { @Override public void execute() { ...

    Android策略模式简单Demo

    在这个“Android策略模式简单Demo”中,我们将深入理解如何在Java中实现并应用策略模式。 首先,策略模式的核心思想是定义一系列算法,并将每个算法封装起来,使它们可以相互替换。这些算法都遵循同一个接口,因此...

    设计模式之策略模式源码(C#+.NET6)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在C#与.NET6框架下,策略模式的应用能够帮助我们实现代码的灵活性和可扩展性。下面将详细讲解策略模式的核心概念、实现方式以及如何在实际项目中应用...

    策略模式的实现,通过反射

    策略模式包含三个主要角色:策略接口(Context)、具体策略类(Concrete Strategies)以及上下文(Strategy)。策略接口定义了所有支持的算法的公共接口,具体策略类实现了这个接口,提供了具体的算法实现。上下文则...

Global site tag (gtag.js) - Google Analytics