您的位置:首页 > 健康 > 美食 > 重庆网站有哪些_邢台网络运营中心处理中心_百度广告联盟赚广告费_百度竞价排名一年费用

重庆网站有哪些_邢台网络运营中心处理中心_百度广告联盟赚广告费_百度竞价排名一年费用

2024/10/6 8:30:17 来源:https://blog.csdn.net/qq_50801874/article/details/142656481  浏览:    关键词:重庆网站有哪些_邢台网络运营中心处理中心_百度广告联盟赚广告费_百度竞价排名一年费用
重庆网站有哪些_邢台网络运营中心处理中心_百度广告联盟赚广告费_百度竞价排名一年费用

基本概念

策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以互换。策略模式使得算法可以独立于使用它的客户端而变化。策略模式的关键在于定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。

类图

在策略模式类图中包含如下几个角色:

Context(环境类):环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略。

Strategy(抽象策略类):它为所支持的算法声明了抽象方法,是所有策略类的父类,它可以是抽象类或具体类,也可以是接口。环境类通过抽象策略类中声明的方法在运行时调用具体策略类中实现的算法。

ConcreteStrategy(具体策略类):它实现了在抽象策略类中声明的算法,在运行时,具体策略类将覆盖在环境类中定义的抽象策略类对象,使用一种具体的算法实现某个业务处理。

代码实现

使用策略模式实现加减乘除四则运算。

抽象策略类[Strategy.java]

public interface Strategy {int calculate(int x, int y);
}

加法策略[AddStrategy.java]

public class AddStrategy implements Strategy {@Overridepublic int calculate(int x, int y) {return x + y;}
}

减法策略[SubtractStrategy.java]

public class SubtractStrategy implements Strategy {@Overridepublic int calculate(int x, int y) {return x - y;}
}

乘法策略[MultiplyStrategy.java]

public class MultiplyStrategy implements Strategy {@Overridepublic int calculate(int x, int y) {return x * y;}
}

除法策略[DivideStrategy.java]

public class DivideStrategy implements Strategy {@Overridepublic int calculate(int x, int y) {return x / y;}
}

环境类[Context.java]

public class Context {private Strategy strategy;public Context(Strategy strategy) {this.strategy = strategy;}public int calculate(int x, int y) {return strategy.calculate(x, y);}public void setStrategy(Strategy strategy) {this.strategy = strategy;}
}

测试类[Client.java]

public class Client {public static void main(String[] args) {Context context = new Context(new AddStrategy());System.out.println("9 + 3 = " + context.calculate(9, 3));context.setStrategy(new SubtractStrategy());System.out.println("9 - 3 = " + context.calculate(9, 3));context.setStrategy(new MultiplyStrategy());System.out.println("9 * 3 = " + context.calculate(9, 3));context.setStrategy(new DivideStrategy());System.out.println("9 / 3 = " + context.calculate(9, 3));}
}

运行结果

9 + 3 = 12

9 - 3 = 6

9 * 3 = 27

9 / 3 = 3

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com