当前位置: 首页 > news >正文

建设网站石家庄百度客服人工电话95188

建设网站石家庄,百度客服人工电话95188,有什么可以做兼职的网站,帝国cms灵动标签做网站地图策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改…

策略模式

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

在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。

介绍

意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。

何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。

如何解决:将这些算法封装成一个一个的类,任意地替换。

关键代码:实现同一个接口。

应用实例: 1、诸葛亮的锦囊妙计,每一个锦囊就是一个策略。 2、旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。 3、JAVA AWT 中的 LayoutManager。

优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。

缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。

使用场景: 1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。 2、一个系统需要动态地在几种算法中选择一种。 3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。

注意事项:如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题。

实现

我们将创建一个定义活动的 Strategy 接口和实现了 Strategy 接口的实体策略类。Context 是一个使用了某种策略的类。

StrategyPatternDemo,我们的演示类使用 Context 和策略对象来演示 Context 在它所配置或使用的策略改变时的行为变化。

在这里插入图片描述

代码

步骤 1
创建一个接口。
Strategy.java

public interface Strategy {public int doOperation(int num1, int num2);
}

步骤 2
创建实现接口的实体类。
OperationAdd.java

public class OperationAdd implements Strategy{@Overridepublic int doOperation(int num1, int num2) {return num1 + num2;}
}
OperationSubtract.java
public class OperationSubtract implements Strategy{@Overridepublic int doOperation(int num1, int num2) {return num1 - num2;}
}
OperationMultiply.java
public class OperationMultiply implements Strategy{@Overridepublic int doOperation(int num1, int num2) {return num1 * num2;}
}

步骤 3
创建 Context 类。
Context.java

public class Context {private Strategy strategy;public Context(Strategy strategy){this.strategy = strategy;}public int executeStrategy(int num1, int num2){return strategy.doOperation(num1, num2);}
}

步骤 4
使用 Context 来查看当它改变策略 Strategy 时的行为变化。
StrategyPatternDemo.java

public class StrategyPatternDemo {public static void main(String[] args) {Context context = new Context(new OperationAdd());    System.out.println("10 + 5 = " + context.executeStrategy(10, 5));context = new Context(new OperationSubtract());      System.out.println("10 - 5 = " + context.executeStrategy(10, 5));context = new Context(new OperationMultiply());    System.out.println("10 * 5 = " + context.executeStrategy(10, 5));}
}

运行结果

10 + 5 = 15
10 - 5 = 5
10 * 5 = 50

转自菜鸟教程: https://www.runoob.com/design-pattern/strategy-pattern.html

http://www.lbrq.cn/news/2354221.html

相关文章:

  • iis如何做同时运行两个网站80端口百度公司招聘官网最新招聘
  • 制作响应式网站报价百度推广渠道
  • 哪个网站做贺卡做的好上海关键词优化公司哪家好
  • 网站建设公司每年可以做多少个网站人际网络营销2900
  • 做学校网站会下线吗百度直接打开
  • 国外优秀ps网站中视频自媒体账号注册下载
  • 苏中建设集团网站官网营销策略分析论文
  • 企业网站建设费记什么科目东营seo
  • 做网站的电脑软件网站推广软件哪个最好
  • 360网站上做宣传要多少钱seo搜索引擎优化怎么做
  • 网站开发项目安排免费b站推广入口
  • 做特卖的网站高端建站
  • .net网站如何优化如何发布自己的网站
  • 北京哪家公司做网站好搜索引擎市场份额2023
  • 市场营销策略有哪几种网站怎么优化排名的方法
  • 网络平台宣传费用seo运营是什么
  • 东莞做网站注意事项网站宣传推广文案
  • 万州房地产网站建设百度秒收录软件工具
  • 西安网站建设服务商交易平台
  • 玉屏网络推广公司seo3
  • 中小企业网站积木式搭建cba赛程
  • 石家庄做网站哪家公司好企业网站优化方案案例
  • 博罗做网站公司如何进行搜索引擎优化 简答案
  • 有哪几种语言做的网站西安网站seo公司
  • 龙岩网红街广州seo技术外包公司
  • 石家庄外贸网站制作如何营销推广
  • 现在网站做多宽百度网站分析
  • 备案 网站建设计划书百度平台客服怎么联系
  • 做奢侈品的网站seo营销网站
  • 武汉网站建设吧销售推广方案
  • Promise与Axios:异步编程
  • C++-linux系统编程 8.进程(二)exec函数族详解
  • 复习笔记 39
  • GBase 8a 与 Spring Boot + MyBatis 整合实战:从环境搭建到CRUD操作
  • Linux操作系统从入门到实战(九)Linux开发工具(中)自动化构建-make/Makefile知识讲解
  • HTTP常见误区