`
hnuxbl
  • 浏览: 8359 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

设计模式----策略模式

 
阅读更多

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文: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.)

 

实例

算法接口:Strategy.java

package strategy;

public interface Strategy {
	public void AlgorithmInterface();
}
 

具体算法A实现:ConcreteStrategyA.java

package strategy;

public class ConcreteStrategyA implements Strategy {

	@Override
	public void AlgorithmInterface() {
		// TODO Auto-generated method stub
		System.out.println("具体算法A实现");
	}

}
 

具体算法B实现:ConcreteStrategyB.java

package strategy;

public class ConcreteStrategyB implements Strategy {

	@Override
	public void AlgorithmInterface() {
		// TODO Auto-generated method stub
		System.out.println("具体算法B实现");
	}

}
 

上下文类,维护一个对Strategy对象的引用:Context.java

package strategy;

public class Context {
	
	public Context(Strategy strategy) {	//初始化时,传入具体的策略对象
		this.strategy = strategy;
	}
	
	public void contextInterface() {
		strategy.AlgorithmInterface();
	}
	
	private Strategy strategy;
}
 

Main函数:Main.java

package strategy;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Context context;
		
		//算法A
		context = new Context(new ConcreteStrategyA());
		context.contextInterface();
		//算法B
		context = new Context(new ConcreteStrategyB());
		context.contextInterface();
	}

}
 
分享到:
评论

相关推荐

    c++设计模式-行为型模式-策略模式

    c++设计模式-行为型模式-策略模式;qt工程;c++简单源码; 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于...

    JAVA-设计模式-行为型模式-策略模式

    JAVA-设计模式-行为型模式-策略模式

    C++设计模式--基于Qt4开源跨平台开发框架

    《C++设计模式--基于Qt4开源跨平台开发框架》一书主要探讨了如何在C++编程中利用设计模式,并结合Qt4框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...

    php设计模式-策略模式-例题学习

    在这个"php设计模式-策略模式-例题学习"的例子中,我们将深入理解策略模式的运用及其在PHP中的实现。 首先,让我们来看看核心的类和接口: 1. `HandStrategyInterface.php`: 这个文件定义了一个接口`...

    设计模式-策略者

    在《设计模式-策略者》这篇文章中,作者深入浅出地介绍了策略模式的基本概念、结构和实现方式。文章可能涵盖了以下几个关键知识点: 1. **模式定义**:策略模式允许在运行时选择不同的算法或策略,提供了一种用面向...

    设计模式-Java语言中的应用

    通过阅读《设计模式-Java语言中的应用》,读者不仅可以掌握设计模式的基本概念和原理,还能学习到如何在实际项目中选择合适的设计模式,以及如何优雅地在Java代码中实现这些模式。这将有助于提升开发者的编程技巧,...

    北大青鸟设计模式--策略模式

    北大青鸟关于设计模式的PPT,讲述的非常清晰,对于初学设计模式的人来说,非常有用。本篇是关于策略模式的PPT

    设计模式---策略者模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要在不同时间或根据不同条件执行不同算法的情况。策略模式允许我们将算法封装到独立的可互换的策略类中,使得算法的变化...

    C++设计模式-基于QT4开源跨平台开发框架 源码

    5. **策略模式** - QT4的信号和槽可以视为一种策略,开发者可以根据需要连接不同的槽函数来改变对象的行为。 6. **命令模式** - 可以利用QT4的QMetaObject系统和QSignalMapper来实现命令模式,通过信号触发不同的...

    java设计模式--策略模式

    策略模式是Java设计模式中的一种行为模式,它允许在运行时选择算法或策略,从而提供了更大的灵活性。在HeadFirst的《设计模式》一书中,第一章深入浅出地讲解了这一模式,通过实例帮助读者理解其核心概念和应用场景...

    设计模式--策略模式StrategyPattern

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来执行不同算法的情况。策略模式提供了一种将算法族封装到各自独立的类中,并在运行时选择具体...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    - 策略模式(Strategy):定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换。 - 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - 访问者模式...

    深入浅出设计模式(C#版)--策略模式--示例代码

    例如,在"深入浅出设计模式(C#版)--策略模式--示例代码"中,可能会有一个`IDuck`接口,它定义了飞、叫等基本行为。然后有多个具体的鸭子类型,如`MallardDuck`、`RedheadDuck`等,每个类型可能有不同的飞行和叫声...

    软件设计模式--填空题+简答题(复习7).rar

    设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代器、访问者、备忘录、...

    JAVA设计模式例程-策略模式

    在众多的设计模式中,策略模式(Strategy Pattern)是一种行为设计模式,它使你能在运行时改变对象的行为。在这个“JAVA设计模式例程-策略模式”的压缩包中,我们可以深入探讨策略模式的原理及其应用。 策略模式的...

    JAVA设计模式--程序设计--反射--注解--泛型

    设计模式包括创建型模式(如单例、工厂方法、抽象工厂等)、结构型模式(如适配器、装饰器、代理等)和行为型模式(如策略、观察者、职责链等)。这些模式提供了良好的可复用性和可扩展性,帮助开发者遵循“开闭原则...

    设计模式解读之--策略模式.pdf

    ### 设计模式解读之策略模式 #### 模式定义与核心思想 策略模式是一种行为设计模式,它使得算法可以独立于使用它的客户而变化。在软件工程中,策略模式允许一组算法封装成一系列的类,它们共享相同的接口,但内部...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)_《0528》.rar

    《设计模式--基于C#的工程化实现及扩展》是一本深入探讨软件设计模式的书籍,作者王翔通过C#语言来阐述各种设计模式的工程化应用和拓展。设计模式是软件开发中的一种最佳实践,它总结了在特定场景下解决常见问题的...

    设计模式系列博客--策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来改变算法的情况。策略模式就是为了解决这类问题而诞生的,它允许我们在不修改对象本身的情况下...

Global site tag (gtag.js) - Google Analytics