`
liuxinglanyue
  • 浏览: 561918 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java设计模式之策略模式

阅读更多

STRATEGY  (Object Behavioral) 
Purpose 
Defines a set of encapsulated algorithms that can be swapped 
to carry out a specific behavior. 
Use When 
    1 The only difference between many related classes is their 
       behavior. 
    2 Multiple versions or variations of an algorithm are required. 
    3 Algorithms access or utilize data that calling code shouldn’t 
       be exposed to. 
    4 The behavior of a class should be defined at runtime. 
    5 Conditional statements are complex and hard to maintain. 
Example 
When importing data into a new system different validation 
algorithms may be run based on the data set. By configuring the 
import to utilize strategies the conditional logic to determine 
what validation set to run can be removed and the import can be 
decoupled from the actual validation code. This will allow us to 
dynamically call one or more strategies during the import. 

Java代码 
  1. package javaPattern;  
  2.   
  3. public interface Strategy {  
  4.     public void execute();  
  5. }  
  6. class ConcreteStrategyA implements Strategy{  
  7.     public void execute(){  
  8.         System.out.println("算法A");  
  9.     }  
  10. }  
  11. class ConcreteStrategyB implements Strategy{  
  12.     public void execute(){  
  13.         System.out.println("算法B");  
  14.     }  
  15. }  
  16. class Context{  
  17.       
  18.     private Strategy strategy;  
  19.     public Context(Strategy strategy){  
  20.         this.strategy = strategy;  
  21.     }  
  22.     public void someMethod(){  
  23.         strategy.execute();  
  24.     }  
  25.     public static void main(String[] args) {  
  26.         ConcreteStrategyA csA = new ConcreteStrategyA();  
  27.         Context context = new Context(csA);  
  28.         context.someMethod();  
  29.     }  
  30. }  

Strategy模式与Template Method模式都是对不同算法的抽象与封装,但它们的实现粒度不一样。Strategy模式从类的角度,对整个算法加以封装,Template Method模式从方法的角度,对算法的一部分加以封装,且Template Method模式有一个方法模板的概念,在作为抽象类的父类里,定义了一个具有固定算法并可以细分为多个步骤的模板方法(public)。

分享到:
评论

相关推荐

    java设计模式之策略模式

    策略模式是Java设计模式中的一种行为模式,它允许在运行时选择算法或策略,而无需在编译时就做出决定。这种模式的核心思想是将不同的算法封装到具有共同接口的独立类中,使得它们可以相互替换,从而提高了代码的灵活...

    55-Java设计模式之策略模式与状态模式1

    Java 设计模式之策略模式与状态模式 策略模式是 Java 中的一种设计模式,它主要用于解决系统与第三方接口进行数据交互的问题。当系统需要与多种格式的数据进行交互时,使用策略模式可以很好地解决这个问题。例如,...

    java设计模式之策略模式与模板模式

    在Java编程领域,设计模式是解决常见问题的可重用解决方案,它们代表了软件设计的最佳实践。本篇文章将深入探讨两种重要的设计模式:策略模式和模板模式。通过理解这两种模式,开发者可以更好地组织代码,提高代码的...

    java设计模式之策略模式实现源码

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。 首先,策略模式的...

    JAVA设计模式之策略模式.docx

    策略模式是一种设计模式,它允许在运行时动态选择和切换不同的算法或策略,而不影响到使用这些算法的客户端代码。这种模式将策略的定义和使用分开,使得算法的变化不会影响到调用者,同时提供了更好的可扩展性。 在...

    Java 经典设计模式讲解以及项目实战

    Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...

    Java 设计模式 策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。 首先,策略模式的...

    java设计模式-策略模式

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

    Java设计模式之策略模式定义与用法详解

    Java设计模式之策略模式定义与用法详解 策略模式是一种行为设计模式,它定义了一系列算法,把他们一个一个封装起来,并且使他们可以相互替换。策略模式的主要优点是实现了上下文和具体策略的松耦合关系,使得上下文...

    设计模式之策略模式Java实现和类设计图

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常涉及定义一系列算法,将每个算法封装到具有共同接口的独立类中,使得它们可以相互替换。这样做的主要好处是算法的变化不会影响...

    JAVA设计模式(java设计)

    Java设计模式是面向对象编程领域中的重要概念,它是一套被广泛接受并实践的解决软件设计问题的经验总结。设计模式并非具体的代码或库,而是一种在特定情境下为了解决常见问题而制定的通用解决方案的描述。它们描述了...

    Java设计模式之策略模式_动力节点Java学院整理

    Java设计模式之策略模式 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。策略模式的定义是:定义一组算法,将每个算法都封装起来,并且使他们之间可以...

    Java设计模式之策略模式原理与用法实例详解

    策略模式是Java设计模式中的一种非常重要的模式,它可以让算法独立于使用它的客户而独立变化。策略模式定义了一系列的算法,并将每一个算法封装起来,使它们还可以相互替换。 策略模式的组成部分: 1. 抽象策略...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    《Java设计模式》刘伟 课后习题及模拟试题答案.rar

    《Java设计模式》是刘伟老师的一本经典教材,它深入浅出地讲解了软件设计中的重要概念——设计模式。设计模式是经验丰富的开发者在解决常见问题时总结出的通用解决方案,是软件开发中的智慧结晶。这本书的课后习题和...

Global site tag (gtag.js) - Google Analytics