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设计模式》 

 

目录
相关文章
|
7月前
|
设计模式 算法 Java
Java 设计模式:深入模板方法模式的原理与应用
【4月更文挑战第27天】模板方法模式是一种行为设计模式,主要用于定义一个操作中的算法的框架,允许子类在不改变算法结构的情况下重定义算法的某些特定步骤。
69 1
|
设计模式 Java
设计模式之工厂模式(Java)
设计模式之工厂模式(Java)
设计模式之工厂模式(Java)
|
设计模式 算法
Java--设计模式-18-策略模式
策略模式(Strategy Pattern)就是一个类的行为或其算法封装起来,在运行时可以更改,相互替换,最终达到何种目的,取决于调用者传入的要求条件。属于行为型模式。
125 0
Java--设计模式-18-策略模式
|
设计模式 算法 Java
Java中常用的设计模式【策略模式】
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
142 0
Java中常用的设计模式【策略模式】
|
设计模式 Java
Java中常用的设计模式【模板模式】
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
91 0
Java中常用的设计模式【模板模式】
|
设计模式 Java
Java中常用的设计模式【装饰器模式】
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
139 0
Java中常用的设计模式【装饰器模式】
|
设计模式 Java 数据库
Java中常用的设计模式【工厂模式】
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
125 0
Java中常用的设计模式【工厂模式】
|
设计模式 算法 Java
JAVA 设计模式-策略模式
策略模式(Strategy Pattern) 也叫 政策模式(Policy Pattern)。指的是对象具备某个行为,但是在不同的场景中,该行为有不同的实现算法
183 0
|
设计模式 算法 Java
java 设计模式之模板方法模式
java 设计模式之模板方法模式
121 0
java 设计模式之模板方法模式
|
设计模式 Java uml
java 设计模式之装饰器模式学习
java 设计模式之装饰器模式学习
125 0
java 设计模式之装饰器模式学习