`

设计模式回顾之四:策略模式(Strategy)

 
阅读更多

设计模式回顾系列文章: 主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。

------------------------------------------------

策略模式:

根据所处的上下文,使用不同的业务规则或算法。

将算法的选择和算法的实现相分离。允许根据上下文进行选择。

让使用算法的类(Context)包含一个抽象类(Strategy),该抽象类有一个抽象方法指定如何调用算法。每个派生类按需要实现算法。

 

程序实现:

1、算法接口:

public interface Strategy {
	public void algorithm();
}

2、算法实现1:

public class FirstStrategy implements Strategy {

	public void algorithm() {
		System.out.println("THE FIRST STRATEGY!!!");
	}

}

3、算法实现2:

public class SecondStrategy implements Strategy{

	public void algorithm() {
		System.out.println("THE SECOND STRATEGY!!!");
	}

}

4、使用算法的类:

public class Context {//策略使用类
	private Strategy strategy;
	public void setStrategy(Strategy str){//设置策略
		this.strategy=str;
	}
	public void doStrategyWork(){//使用策略
		strategy.algorithm();
	}
}

5、程序入口:

public static void main(String[] args){
        Context c=new Context();//策略使用类
        
        Strategy a1=new FirstStrategy();//实例化策略1
        c.setStrategy(a1);//设置策略1
        c.doStrategyWork();//让策略1工作
        
        Strategy a2=new SecondStrategy();//实例化策略2
        c.setStrategy(a2);//设置策略2
        c.doStrategyWork();//让策略2工作
        
        c.setStrategy(a1);
        c.doStrategyWork();
}

 

举例:不同的业务场景使用不同的业务规则(如计费、价格等)。

分享到:
评论

相关推荐

    《设计模式:可复用面向对象软件的基础》英文版

    《设计模式:可复用面向对象软件的基础》是一本由Erich Gamma、Richard Helm等四位国际知名的软件工程师共同编写的经典之作,该书提供了面向对象软件设计中常用的模式,并通过具体的案例解释了这些模式如何帮助解决...

    李建忠 C#面向对象设计模式纵横谈(25):设计模式总结

    在第25讲中,他集中对整个系列进行了一次全面的总结,让我们一起来回顾和探讨这些设计模式的核心要点。 设计模式是经过实践验证的、在特定场景下解决常见问题的最佳解决方案。它们是面向对象设计的智慧结晶,通过...

    C#设计模式.PDF

    在本章节中,作者可能会回顾面向对象编程的基本概念,如封装、继承、多态等,并为后面介绍的设计模式奠定理论基础。 ### 2. 设计模式举例 这部分内容将通过具体的例子来介绍设计模式的应用场景,帮助读者理解不同...

    软件设计模式 L02-Strategy.ppt

    策略模式(Strategy Pattern)是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需求的变化,特别是在涉及行为或者算法的时候。策略模式提供了一种方式来封装一系列相关的算法,并使...

    java设计模式迷你手册.rar

    行为型模式则关注对象间的交互和责任分配,比如策略模式(Strategy)、观察者模式(Observer)和命令模式(Command),它们有助于实现更灵活的行为控制和事件驱动。 "设计模式迷你手册.chm"文件可能包含了以下主要...

    java模式设计视频资料2(策略模式)

    7. **总结与展望**:回顾策略模式的关键点,探讨其与其他设计模式的结合使用,以及在面向对象设计中的重要地位。 这个视频资料对于学习和理解Java中的设计模式,尤其是策略模式,将是一个很好的资源。通过观看和...

    设计模式解析-英文

    各种工厂模式 242 第21章 Singleton模式和Double-Checked Locking模式 249 第22章 Object Pool模式 257 第23章 Factory Method模式 267 第24章 工厂模式的总结 272 第八部分 终点与起点 第25章 设计模式回顾:总结与...

    设计模式解析习题解答,已经做好目录标签

    - 第9章的策略模式(Strategy Pattern)允许在运行时动态选择算法或策略。 - 第10章的桥接模式(Bridge Pattern)分离抽象接口和其实现,使得两者可以独立变化。 - 第11章的抽象工厂模式(Abstract Factory Pattern...

    侯捷2015设计模式课件-同济

    首先,设计模式课件回顾了面向对象编程(Object-Oriented Programming,OOP)的基本原则,如封装、继承和多态,这些是设计模式依赖的基础。 接下来,课程深入讨论了GoF的设计模式。这些模式可以分为三类: 1. 创建...

    精典设计模式

    行为型模式则关注对象间的行为分配,例如观察者模式(Observer)、策略模式(Strategy)和责任链模式(Chain of Responsibility)。 在C++和C#中,设计模式的应用广泛且深入。C++作为静态类型的强类型语言,其模板...

    C#设计模式大全

    策略模式是一个行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以互换。 - **结构**:包含策略接口、具体策略类以及环境类。 - **示例性源代码**:例如,选择不同的排序算法。 - **使用条件**...

    11-回顾和总结(1).html

    策略模式( Strategy ) 模板方法模式( Template Method ) 观察者模式( Observer ) 迭代子模式( Iterator ) 责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态...

    GoF 23种设计模式解析附C++实现源码(2nd Edition).pdf

    在完成所有设计模式的解析后,作者回顾了整个学习过程中的心路历程,包括初读GoF原著时的困惑、实现过程中遇到的问题以及最终领悟设计模式精髓时的喜悦。这一过程不仅仅是技术上的成长,更是一种思维方式的转变。 #...

    高级软件工程之设计模式.ppt

    这个名为"高级软件工程之设计模式.ppt"的文档显然涵盖了设计模式这一主题,它通过实例帮助我们理解设计模式的重要性及其应用。文档中提到了一个关于长方形和正方形的案例,这是对设计模式中的“开闭原则”(Open-...

    算法导论 DesignPatterns Gof

    在最后一章中,作者们回顾了设计模式的发展历程,展望了未来可能的发展方向,并鼓励更多的软件工程师参与到模式社区中来。此外,书中还提供了一些基础类的定义和相关术语的解释,为读者提供了更全面的学习资源。 ...

    坦克游戏,用于复习设计模式,java基础和网络应用.zip

    我们可以看到多种设计模式的应用,如单例模式(Singleton)用于确保游戏全局只有一个实例,工厂模式(Factory)用于创建不同类型的坦克或炮弹,观察者模式(Observer)用于实现游戏事件的发布和订阅,还有策略模式...

    DesignPatterns:回顾在软件体系结构和设计课程中看到的设计模式

    14. 策略模式(Strategy Pattern):定义了一系列算法,并将每个算法封装起来,使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户。在Java中,策略模式可以用于替代复杂的条件分支语句。 15. 模板方法...

Global site tag (gtag.js) - Google Analytics