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

如何自己做网站知识珠海今天最新通知

如何自己做网站知识,珠海今天最新通知,800元五合一建站,资质升级业绩备案在哪个网站做策略模式是一种行为设计模式,它定义了一系列算法,将每个算法封装成一个对象,并使它们可以互换。策略模式使得算法的变化可以独立于使用算法的客户端。在策略模式中,有三个核心角色:策略接口(Strategy&#…

        策略模式是一种行为设计模式,它定义了一系列算法,将每个算法封装成一个对象,并使它们可以互换。策略模式使得算法的变化可以独立于使用算法的客户端。在策略模式中,有三个核心角色:策略接口(Strategy)、具体策略(ConcreteStrategy)、以及上下文(Context)。
① 策略接口(Strategy):定义了一个算法族的接口。
② 具体策略(ConcreteStrategy):实现了策略接口,封装了具体的算法实现。
③ 上下文(Context):维护一个对策略对象的引用,负责将客户端请求委托给具体的策略对象。
策略模式的核心思想是将算法的定义与使用分离,使得算法可以独立于客户端进行变化、扩展和替换

1、场景设计

实现场景:设计A、B两种策略,同一个客户端可以根据需要从两种策略中选择使用。

2、C++实现

`Strategy` 是策略接口,定义了一个纯虚的 `execute()` 方法。`ConcreteStrategyA` 和 `ConcreteStrategyB` 是具体策略,分别实现了 `execute()` 方法来执行具体的算法。`Context` 是上下文,持有一个策略对象的指针,并且负责将客户端的请求委托给具体的策略对象。在 `main()` 函数中,我们创建了两个具体策略对象,然后通过 `Context` 对象执行了这些策略。 

#include <iostream>// 策略接口
class Strategy {public:virtual void execute() = 0;
};// 具体策略A
class ConcreteStrategyA : public Strategy {public:void execute() override {std::cout << "Executing strategy A" << std::endl;}
};// 具体策略B
class ConcreteStrategyB : public Strategy {public:void execute() override {std::cout << "Executing strategy B" << std::endl;}
};// 上下文
class Context {private:Strategy *strategy;public:Context(Strategy *strat) : strategy(strat) {}void setStrategy(Strategy *strat) {strategy = strat;}void executeStrategy() {if (strategy) {strategy->execute();}}
};int main() {ConcreteStrategyA strategyA;ConcreteStrategyB strategyB;Context context(&strategyA);context.executeStrategy();context.setStrategy(&strategyB);context.executeStrategy();return 0;
}

3、Java实现

`Strategy` 是策略接口,定义了一个执行算法的方法 `execute()`。`ConcreteStrategyA` 和 `ConcreteStrategyB` 是具体策略,分别实现了 `execute()` 方法来执行具体的算法。`Context` 是上下文,维护一个对策略对象的引用,并且负责将客户端的请求委托给具体的策略对象。在 `main()` 方法中,我们创建了上下文对象,并分别设置了两种不同的策略,然后执行策略。 

package behavioralpattern.strategy;public class StrategyDemo {// 策略接口interface Strategy {void execute();}// 具体策略Astatic class ConcreteStrategyA implements Strategy {@Overridepublic void execute() {System.out.println("Executing strategy A");}}// 具体策略Bstatic class ConcreteStrategyB implements Strategy {@Overridepublic void execute() {System.out.println("Executing strategy B");}}// 上下文static class Context {private Strategy strategy;public void setStrategy(Strategy strategy) {this.strategy = strategy;}public void executeStrategy() {strategy.execute();}}public static void main(String[] args) {Context context = new Context();Strategy strategyA = new ConcreteStrategyA();Strategy strategyB = new ConcreteStrategyB();context.setStrategy(strategyA);context.executeStrategy();context.setStrategy(strategyB);context.executeStrategy();}
}
http://www.yayakq.cn/news/108947/

相关文章:

  • 什么公司做网商网站的咸阳兼职做网站
  • 如何做织梦手机网站网站开发人员需要什么要求
  • 蔚县网站建设wl17581做微信小程序网站
  • 做营销网站seo带搜索网站建设视频教程
  • php做网站自动生成前台吗视频网站开发技术书
  • 如何管理手机网站源码怎样创建网站以及建站流程是什么
  • 张掖市建设规划局网站qq代刷网站推广
  • 做现货值得关注的财经网站上海建设工程交易服务中心
  • 创业开网站建设公司全网seo
  • 中建卓越建设管理有限公司网站爬虫做网站相关教程
  • 个人网站做哪一种比较赚钱武义县网站建设
  • 织梦茶叶网站模板免费下载开原网站制作公司
  • 网站建设08keji在线图片编辑器下载
  • 黑龙江省城乡和建设厅网站企业购网站建设
  • 货车保险哪家网站可以直接做软件系统开发流程图
  • wordpress文章大网站公司网站的用途
  • 建设工程合同备案网站在网上怎么做网站
  • 个人资料网站怎么做青岛胶南做网站的
  • 如何查看网站是不是wordpress韶关市开发区建设局网站
  • 苏州网站开发公司兴田德润简介网站建设栏目分级
  • 做最好的网站html5手机网站开发工具
  • asp 网站名字泉州做网站需要多少钱
  • 官方网站app大全大连旅顺口区房价
  • 网站开发设计总结及心得体会莱阳做网站的
  • 国内开源网站网站手机开
  • 怎样看网站建设长春网站建设模板样式
  • 支持api网站开发pc网站优势
  • 淮安做微信网站免费ppt模板下载熊猫
  • 深圳大学网站建设茶文化网站网页设计
  • 优秀设计师个人网站2022华为云营销季