Java记录 -68- Java实现策略模式

Java实现策略模式

策略模式的编写步骤:

1. 对策略对象定义一个公共接口;

2. 编写策略类,该类实现了上面的公共接口;

3. 在使用策略对象的类中保存一个对策略对象的引用;

4. 在使用策略对象的类中,实现对策略对象的set和get方法(注入)或者使用构造方法完成赋值

代码实例实现简单的加减乘除运算。

策略接口:

public interface Strategy {

    public int calculate(int a, int b);
}

策略类:

public class AddStrategy implements Strategy{

    public int calculate(int a, int b) {
        return a + b;
    }
}
public class SubstractStrategy implements Strategy{

    public int calculate(int a, int b) {
        return a - b;
    }
}
public class MultiplyStrategy implements Strategy{

    public int calculate(int a, int b) {
        return a * b;
    }
}
public class DivideStrategy implements Strategy{

    public int calculate(int a, int b) {
        return a / b;
    }
}

使用策略模式的类:

public class Environment {

    private Strategy strategy;

    public Environment(){}
    
    public Environment(Strategy strategy){
        this.strategy = strategy;
    }

    public Strategy getStrategy() {
        return strategy;
    }

    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }
    
    public int calculate(int a, int b){
        return this.strategy.calculate(a, b);
    }
    
    public int calculate(int a, int b, Strategy strategy){
        return strategy.calculate(a, b);
    }
}

具体业务客户端:

public class Client {

    public static void main(String[] args) {

        Environment environment = new Environment(new AddStrategy());
        System.out.println(environment.calculate(5, 3));

        environment.setStrategy(new SubstractStrategy());
        System.out.println(environment.calculate(5, 3));
        
        System.out.println(environment.calculate(2, 3, new MultiplyStrategy()));
        
        System.out.println(environment.calculate(6, 3, new DivideStrategy()));
    }
}
时间: 2024-12-17 08:13:25

Java记录 -68- Java实现策略模式的相关文章

Java设计模式(七)策略模式 模板模式

(十三)策略模式 策略模式定义了多个封装起来的算法,封装的算法可以相互替换,并且算法的变化不会影响到使用算法的客户.借用另一位大神的例子. interface ICalculator{ public int calculate(String exp); } abstract class AbstractCalculator{ public int[] split(String exp,String opt){ String array[] = exp.split(opt); int arrayI

Java设计模式菜鸟系列(一)策略模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39721563 今天开始咱们来谈谈Java设计模式.这里会结合uml图形来讲解,有对uml建模不熟的可以参考我的另一篇博文uml建模. 首先,个人觉得模式的设计就是一个将变化的东西和不变(稳定)的东西分离的过程.咱们的应用中可能有很多需要改变的地方,而模式要做的就是把它们"抽取"出来并进行"封装"和"实现",因此更多的时候咱们是面向接口编程

java设计模式(六)策略模式

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们可以相互替换,让算法独立于使用它的客户而独立变化,具体应用场景如第三方支付对接不同银行的算法. 要点:1)抽象策略角色    2)具体策略角色:包装相关算法和行为 3)环境角色:持有一个策略类的引用,最终给客户端调用 1.抽象策略接口 public interface SwimmingStratege { public void swimming(); } 2.具体策略角色SwimmingWithFoot public class S

java学习笔记-设计模式14(策略模式)

意图 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化. 策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可. public interface ICalculator { public int calculate(String exp); } public abstract class AbstractCalculator { public int[] split(String exp,String opt){ String

Java面向对象_接口应用——策略模式

概念:定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化. 接口抽象的就是某种方法. OO设计原则:1.面向接口编程  2.封装变化  3.多用组合,少用继承 1 public class Practice14 { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 //用父类的引用指向子类对象 6 Bird d=new Bi

Java描述设计模式(22):策略模式

本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 每年双十一,各大电商平台会推出不同的满减策略,当用户的消费金额满一定额度后,会进行减去一定的优惠额度,从而来一波清仓甩卖,使用策略模式来描述该流程. public class C01_InScene { public static void main(String[] args) { // 选择满减策略,走相应的计算方式 FullReduce strategy = new Full100 (); Payment price

Java 设计模式学习笔记1——策略模式(Duck例子)

0.假设现有工程(Duck)中遇到为类添加功能的问题,如何设计类添加新的功能? 1.利用继承提供的Duck(鸭子)的行为会导致哪些缺点? (1)代码在多个子类中重复 (2)很多男知道所有鸭子的全部行为 (3)运行时的行为不容易改变 (4)改变会牵一发动全身,造成其他鸭子的不想要的改变 [设计原则] 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需呀变化的代码混在一起 2.分开变化与不会变化的部分 将Duck分成两部分,鸭子类和鸭子行为. 类的固有属性和共用的方法写在类中,行为另起一个类

(七)策略模式详解

上章我们着重讲解了观察者模式和事件驱动,那么本章来讨论一个个人认为在开发过程中出场率极高的设计模式,策略模式. 策略模式在LZ第一次接触到的时候,LZ是这么理解的,就是如果我们想往一个方法当中插入随便一段代码的话,就是策略模式.即如下形式. [java] view plaincopy <EMBED id=ZeroClipboardMovie_1 name=ZeroClipboardMovie_1 type=application/x-shockwave-flash align=middle pl

Java设计模式1——策略模式(Strategy Pattern)

最近觅得一本好书<您的设计模式>,读完两章后就能断言,一定是一头极品屌丝写的,而且是专写给开发屌丝男的智慧枕边书,小女子就委屈一下,勉强看看,人笨,谁让他写得这么通俗易懂呢!为了加深理解,用自己的方式记录下来. 上第一章的策略模式之前讲个故事,解释一下类设计的背景:刘备要去江东娶老婆,临走时诸葛亮给伴郎赵云三个锦囊妙计,嘱咐按天机拆开解决棘手问题.这才有了后来的周瑜赔了夫人又折兵.三个妙计放在锦囊中,赵云从锦囊中取妙计获胜.先看类图: 1.三个妙计是具体的实现类,我们设计一个接口,再写三个实现