码迷,mamicode.com
首页 > 其他好文 > 详细

策略模式

时间:2021-06-15 18:41:21      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:context   结果   rac   rgs   str   string   模式   编译   info   

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。

 

public interface Strategy {
    public int operate(int num1, int num2);
}
public class AddOperation implements Strategy {
    @Override
    public int operate(int num1, int num2) {
        return num1 + num2;
    }
}
public class MultiplyOperation implements Strategy {
    @Override
    public int operate(int num1, int num2) {
        return num1 * num2;
    }
}
public class SubtractOperation implements Strategy {
    @Override
    public int operate(int num1, int num2) {
        return num1 - num2;
    }
}
public class Context {
    private Strategy strategy;
    public Context(Strategy strategy) {
        this.strategy = strategy;
    }
    public int execute(int num1, int num2) {
        return strategy.operate(num1, num2);
    }
}

测试:

public class TestDemo {
    public static void main(String[] args) {
        Context c1 = new Context(new AddOperation());
        System.out.println(c1.execute(2,4));

        Context c2 = new Context(new SubtractOperation());
        System.out.println(c2.execute(2,4));

        Context c3 = new Context(new MultiplyOperation());
        System.out.println(c3.execute(2,4));
    }
}

结果:

技术图片

 

 能看到,算法的改变因newContext的构造方法不同而改变。 它不在编译时候确定,而是运行时候确定算法。

 

策略模式

标签:context   结果   rac   rgs   str   string   模式   编译   info   

原文地址:https://www.cnblogs.com/dayanjing/p/14885479.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!