`

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

 
阅读更多
本文参考别人设计模式的一个例子。

关于诸葛亮的三个锦囊妙计的估计。
IStrategy.java(三个妙计的接口类)的代码如下:
package com.designPattern.strategy.interfaces;

/**
 * 定义一个接口,这是诸葛亮老人家给赵云的三个妙计的接口
 * @author yangjianzhou
 *
 */
public interface IStrategy {
	
	public void operate();

}



接下来就是妙计的具体实现类

BackDoor.java代码如下:
package com.designPattern.strategy.interfacesImpl;

import com.designPattern.strategy.interfaces.IStrategy;
/**
 * 这是三个妙计中的一个,即是妙计接口的实现类
 * @author yangjianzhou
 * 找乔国老帮忙,使孙权不能杀刘备
 */
public class BackDoor implements IStrategy{

	@Override
	public void operate() {
       System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");		
	}

}



GrivenGreenLight.java代码如下:

package com.designPattern.strategy.interfacesImpl;

import com.designPattern.strategy.interfaces.IStrategy;
/**
 * 这是三个妙计中的第二个妙计,也是妙计接口的实现类
 * @author yangjianzhou
 * 求吴国太开个绿灯
 */
public class GivenGreenLight implements IStrategy{

	@Override
	public void operate() {
		System.out.println("求吴国太开个绿灯,放行");
	}
}



BlockEnemy.java代码如下:
package com.designPattern.strategy.interfacesImpl;

import com.designPattern.strategy.interfaces.IStrategy;

/**
 * 这是三个妙计中的最后一个妙计,实现了妙计接口
 * @author yangjianzhou
 * 孙夫人断后,挡住追兵
 */
public class BlockEnemy implements IStrategy{

	@Override
	public void operate() {
		System.out.println("孙夫人断后,挡住追兵");
	}

}



锦囊的类,用来装妙计

Context.java代码如下:
package com.designPattern.strategy;

import com.designPattern.strategy.interfaces.IStrategy;

/**
 * 这是装妙计的锦囊
 * @author yangjianzhou
 *
 */
public class Context {

	private IStrategy strategy;
	//在锦囊中转入你要使用的妙计
	public Context(IStrategy strategy){
		this.strategy = strategy;
	}
	//实施妙计了
	public void operate(){
		this.strategy.operate();
	}
	
}



妙计的实施者:赵云

ZhaoYun.java代码如下:
package com.designPattern.strategy;

import com.designPattern.strategy.interfacesImpl.BackDoor;
import com.designPattern.strategy.interfacesImpl.BlockEnemy;
import com.designPattern.strategy.interfacesImpl.GivenGreenLight;

/**
 * 赵云是妙计的实施者
 * @author yangjianzhou
 *
 */
public class ZhaoYun {

	public static void main(String[] args) {
		
		Context context ;
		System.out.println("----------------刚刚到吴国的时候拆开第一个---------------");
		context = new Context(new BackDoor());
		context.operate();
		System.out.println("-------------------第一个妙计使用完毕----------------");
		
		System.out.println("-----------------刘备乐不思蜀了,拆开第二个---------------");
		context = new Context(new GivenGreenLight());
		context.operate();
		System.out.println("-------------------第二个妙计使用完毕----------------");
		
		System.out.println("-----------------孙权的小兵追来了,咋办?拆开第三个---------------");
		context = new Context(new BlockEnemy());
		context.operate();
		System.out.println("-------------------第三个妙计使用完毕----------------");
		
	}
}



运行结果如下:

----------------刚刚到吴国的时候拆开第一个---------------
找乔国老帮忙,让吴国太给孙权施加压力
-------------------第一个妙计使用完毕----------------
-----------------刘备乐不思蜀了,拆开第二个---------------
求吴国太开个绿灯,放行
-------------------第二个妙计使用完毕----------------
-----------------孙权的小兵追来了,咋办?拆开第三个---------------
孙夫人断后,挡住追兵
-------------------第三个妙计使用完毕----------------
分享到:
评论

相关推荐

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

    行为型模式如观察者模式(Observer)、策略模式(Strategy)和访问者模式(Visitor),关注对象之间的交互和责任分配。 在C++中,设计模式的应用通常涉及到面向对象编程的特性,如继承、封装和多态。Qt4框架则为...

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

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

    设计模式--策略模式java例子

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常用于替换硬编码的条件语句,使代码更加灵活、可扩展和易于维护。下面我们将详细探讨策略模式的核心概念、实现方式以及在实际...

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

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。这种模式允许你使用算法族,而无需在代码中硬编码这些算法。通过将算法封装到具有共同接口的独立对象中,策略模式使得你可以根据需要灵活地切换算法,...

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

    策略模式是设计模式的一种,它允许我们在运行时动态地改变对象的行为。在这个"php设计模式-策略模式-例题学习"的例子中,我们将深入理解策略模式的运用及其在PHP中的实现。 首先,让我们来看看核心的类和接口: ...

    设计模式-Strategy模式

    总的来说,Strategy模式是一种强大的设计模式,它鼓励我们以更面向对象的方式来组织代码,通过封装和组合策略,使我们的系统能够应对复杂性和变化。在进行软件设计时,尤其是面对具有多种实现可能的算法或逻辑时,应...

    Java 设计模式-策略模式(Strategy)Android讲解

    首先,策略模式由三个主要组成部分构成:上下文(Context)、策略(Strategy)接口和具体策略(Concrete Strategy)。上下文是使用策略的对象,它维护一个对策略的引用,并调用策略的接口来执行算法。策略接口定义了一组...

    设计模式-策略模式-c++版

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在C++中,策略模式主要用于封装一系列算法,并让它们之间可以互相替换,使得算法的变化独立于使用算法的客户。这种模式通常涉及三个主要角色:策略...

    设计模式-策略者

    "策略者"(Strategy)设计模式是其中的一种行为模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。这种模式让算法的变化独立于使用算法的客户。 在《设计模式-策略者》这篇文章中,作者深入浅...

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

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

    设计模式--策略模式StrategyPattern

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

    java设计模式--策略模式

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

    java设计模式-策略模式

    在这个“java设计模式-策略模式”的示例中,我们将深入探讨如何使用策略模式来实现一个简单的超市促销系统。 策略模式的核心思想是定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换。这使得算法的...

    设计模式-策略模式

    策略模式的核心组成部分包括上下文(Context)、策略(Strategy)接口和具体的策略类。上下文是使用策略的对象,它维护一个对策略对象的引用,并通过这个引用调用策略的方法来执行相应的算法。策略接口定义了策略家族...

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

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

    设计模式培训-strategy

    ### 设计模式培训-strategy #### 一、设计模式概览 设计模式是软件工程领域的一个重要概念,它提供了一套解决常见问题的有效方法。在软件开发的过程中,开发者经常会遇到相似的问题,这些问题往往有着类似的解决...

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

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

    人人都会设计模式---策略模式--Strategy

    【策略模式】是一种设计模式,它的核心思想是将不同的算法或行为封装成独立的类,这些类具有统一的接口,从而使客户端可以灵活地选择并使用其中的任何一种算法,而无需关心具体实现的细节。这种模式可以有效地避免...

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

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

Global site tag (gtag.js) - Google Analytics