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

网站建设招聘兼职seo

网站建设招聘兼职,seo,横岗网站制作,一个万能的营销方案概念 策略模式是一种行为设计摸是,它的核心思想是将一些列的算法封装成独立的对象,并使它们可以相互替换,通过上下文进行调用。 策略模式通过算法抽象为独立的策略类,客户端可以根据自身需求选择不同的策略类来完成任务、这种方…

概念

策略模式是一种行为设计摸是,它的核心思想是将一些列的算法封装成独立的对象,并使它们可以相互替换,通过上下文进行调用。

策略模式通过算法抽象为独立的策略类,客户端可以根据自身需求选择不同的策略类来完成任务、这种方式使得算法的变化不会影响客户端代码。

适用场景

1、当使用对象使用一系列不同的算法,并在运行的时候需要进行动态切换,可以使用策略模式。

2、当有许多的仅在执行的时候一些行为不同,但是这些行为却有些类似的时候就可以使用策略模式。

3、隔离算法和业务逻辑,如果算法的逻辑在上下文中不是很重要,那么就可以使用策略模式将算法封装,实现算法和业务逻辑的隔离。

4、当使用了一系列同一算法的不同变体的时候,需要复杂的条件判断来执行对应的算法的时候,可以使用策略模式。减少业务逻辑的复杂度。

创建方式

1、策略模式需要创建立两个接口,一个是算法接口类,一个是上下文接口。

2、创建算法接口类,需要定义一个算法函数。

3、创建一个上下文接口,需要实现一个算法的引用对象,和一个是设置算法对象的函数,算法执行函数。

4、实现具体的事算法类,继承算法接口类,实现具体的算法实现。

5、实现具体的上下类,继承上下接口。实现接口中的函数。在实现定调用的函数的时候通过算法对象的引用调用算法函数。

6、在客户端使用的时候,先创建算法对象,之后创建上下文对象,在创建上下文对象的时候可以通过构造函数或者设置算法对象的函数将算法对象设置给上下文对象。之后调用上下文函数即可。

类关系图

在这里插入图片描述

示例代码

#include "CeLueMoShi.h"
int main()
{std::cout << "欢迎东哥来到设计模式的世界!\n";//创建策略类对象AlgorithmBase* add = new AddAlgorithm();AlgorithmBase* sub = new SubAlgorithm();AlgorithmBase* mul = new MulAlgorithm();//创建上下文类CeContext context;context.setAlgorith(add);int ret = context.callAlgorithm(5, 5);cout << "add : ret = " << ret << endl;context.setAlgorith(sub);ret = context.callAlgorithm(5, 5);cout << "sub : ret = " << ret << endl;context.setAlgorith(mul);ret = context.callAlgorithm(5, 5);cout << "mul : ret = " << ret << endl;
}
#pragma once//算法接口类
class AlgorithmBase
{
public:AlgorithmBase() {}~AlgorithmBase() {}virtual int algorithm(int a, int b) { return 0; }
};//具体算法类 + 
class AddAlgorithm : public AlgorithmBase {
public:AddAlgorithm() {}~AddAlgorithm() {}int algorithm(int a, int b) {return a + b;}};//具体算法类 - 
class SubAlgorithm : public AlgorithmBase {
public:SubAlgorithm() {}~SubAlgorithm() {}int algorithm(int a, int b) {return a - b;}};//具体算法类 * 
class MulAlgorithm : public AlgorithmBase {
public:MulAlgorithm() {}~MulAlgorithm() {}int algorithm(int a, int b) {return a * b;}};//上下文类,此处省略接口类
class CeContext {
public:CeContext() {}~CeContext() {}void setAlgorith(AlgorithmBase* alg) {m_alg = alg;}int callAlgorithm(int a,int b) {int ret = 0;if (m_alg) {ret = m_alg->algorithm(a, b);}return ret;}
private:AlgorithmBase* m_alg = nullptr;
};
欢迎东哥来到设计模式的世界!
add : ret = 10
sub : ret = 0
mul : ret = 25
http://www.dtcms.com/wzjs/360276.html

相关文章:

  • 中山免费建站百度门店推广
  • 公司做网站比较好的平台线下推广公司
  • 做虚拟主机网站免费一键生成个人网站
  • 新手自己建设一个网站网络营销策划与创意
  • 服务网站建设企业cba目前排行
  • 呼伦贝尔建设工程检测网站软文推广方案
  • 外贸soho通过网站开发客户东莞网站seo推广
  • 泰安做网站建设的公司哪家好百度网站是什么
  • 广州java网站建设互联网营销师教材
  • 外贸移动商城网站建设企业网络推广方案策划书
  • o2o网站开发框架hao123影视
  • 哈尔滨网站建设唯辛ls15227磁力蜘蛛种子搜索
  • 专业做招聘的网站有哪些推广普通话的意义30字
  • 网站建设设计工具什么叫百度竞价推广
  • 鼓楼网站开发国内重大新闻
  • 政府力推企业做网站广告联盟平台
  • 怎样免费做外贸网站app拉新推广平台代理
  • 什么网站可以做引文分析衡水seo营销
  • 跨境网站建设软文新闻发稿平台
  • 淘宝找做网站seo百度快速排名软件
  • 微信哪里可以做视频网站做网站的软件有哪些
  • 做网站的背景图片短视频seo营销
  • 微信小商店万词霸屏百度推广seo
  • 制作一个网站都需要学什么西安百度网站快速排名
  • 烟台网站设计福建省人民政府门户网站
  • 建设官方网站公司t和p在一起怎么做网站
  • 和建设银行类似的网站整站seo怎么做
  • 如何做企业黄页网站业务员用什么软件找客户
  • 优化网站推广教程排名北京网站制作400办理多少钱
  • 经典编辑器wordpress多合一seo插件破解版