JAVA 设计模式 策略模式

简介: 用途Title 它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 策略模式是一种行为型模式。   结构 图-策略模式结构图 Strategy : 定义所有算法的公共接口(AlgorithmInterface)。

用途


Title
定义了算法家族分别封装起来,让它们之间 可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

策略模式是一种 行为型模式

 


结构

图-策略模式结构图

Strategy : 定义所有算法的公共接口(AlgorithmInterface)。Context 使用这个接口去调用 ConcreteStrategy 定义的具体算法。
abstract  class Strategy {
     public  abstract  void AlgorithmInterface();
}

ConcreteStrategy : 实现 Strategy 中的算法接口(AlgorithmInterface)。

class ConcreteStrategyA  extends Strategy {
    @Override
     public  void AlgorithmInterface() {
        System.out.println("算法A");
    }
}

class ConcreteStrategyB  extends Strategy {
    @Override
     public  void AlgorithmInterface() {
        System.out.println("算法B");
    }
}

class ConcreteStrategyC  extends Strategy {
    @Override
     public  void AlgorithmInterface() {
        System.out.println("算法C");
    }
}

Context : 用一个 ConcreteStrategy 来配置。维护一个对 Strategy 对象的引用。

class Context {
    Strategy strategy;
     public Context(Strategy strategy) {
         this.strategy = strategy;
    }
    
     public  void ContextInterface() {
        strategy.AlgorithmInterface();
    }
}

测试代码

public  class StrategyPattern {
     public  static  void main(String[] args) {
        Context context1 =  new Context( new ConcreteStrategyA());
        context1.ContextInterface();
        
        Context context2 =  new Context( new ConcreteStrategyB());
        context2.ContextInterface();
        
        Context context3 =  new Context( new ConcreteStrategyC());
        context3.ContextInterface();
    }
}
View Code

运行结果

算法A
算法B
算法C
View Code



 

推荐

本文属于 JAVA设计模式系列



参考资料

《大话设计模式》

《HeadFirst设计模式》 

 

目录
相关文章
|
设计模式 Java
设计模式之工厂模式(Java)
设计模式之工厂模式(Java)
设计模式之工厂模式(Java)
|
设计模式 算法
Java--设计模式-18-策略模式
策略模式(Strategy Pattern)就是一个类的行为或其算法封装起来,在运行时可以更改,相互替换,最终达到何种目的,取决于调用者传入的要求条件。属于行为型模式。
123 0
Java--设计模式-18-策略模式
|
设计模式 算法 Java
Java中常用的设计模式【策略模式】
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
137 0
Java中常用的设计模式【策略模式】
|
设计模式 Java
Java中常用的设计模式【模板模式】
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
87 0
Java中常用的设计模式【模板模式】
|
设计模式 Java 数据库
Java中常用的设计模式【工厂模式】
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
121 0
Java中常用的设计模式【工厂模式】
|
设计模式 算法 Java
JAVA 设计模式-策略模式
策略模式(Strategy Pattern) 也叫 政策模式(Policy Pattern)。指的是对象具备某个行为,但是在不同的场景中,该行为有不同的实现算法
181 0
|
设计模式 SQL 安全
【设计模式 - Java篇】:设计模式第一式,单例模式
【设计模式 - Java篇】:设计模式第一式,单例模式
109 0
|
设计模式 算法 Java
java 设计模式之模板方法模式
java 设计模式之模板方法模式
115 0
java 设计模式之模板方法模式
|
设计模式 Java 数据库连接
Java 设计模式之工厂模式
Java 设计模式之工厂模式
112 0
|
设计模式 算法 Java
Java-设计模式之策略模式
策略模式作为常用的设计模式之一,在我们开发过程中经常会被用到;本文从概念、角色、实例应用、设计原则、优缺点和应用场景等方面对策略模式进行了解读,希望可以对大家有所帮助;如果有问题,欢迎大家来指证和讨论;
814 0
Java-设计模式之策略模式