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

网站正建设中seo综合查询网站

网站正建设中,seo综合查询网站,邢台移动网站建设服务,网站建设合同需注意什么策略模式 介绍示例示例测试运行结果应用场景优点总结 介绍 策略模式是一种行为设计模式。在策略模式中,可以创建一些独立的类来封装不同的算法,每一个类封装一个具体的算法,每一个封装算法的类叫做策略(Strategy),为了保证这些策…

策略模式

  • 介绍
  • 示例
  • 示例测试
  • 运行结果
  • 应用场景
  • 优点
  • 总结

介绍

策略模式是一种行为设计模式。在策略模式中,可以创建一些独立的类来封装不同的算法,每一个类封装一个具体的算法,每一个封装算法的类叫做策略(Strategy),为了保证这些策略的一致性,一般会用一个接口或者抽象类做统一的规定,所有的策略类都需要遵守这个接口或者抽象类规定的行为。同时定义一个 Context 类来管理算法的使用,通过参数将策略类传递给Context类,运行时动态的决定调用那个具体的算法。

示例

有一个小组去参加比赛,记分机制是取每组得分的最高分,每组得分的最低分,还有每组得分的平均分三种计分制,下面使用策略模式实现这种记分机制。

#include<iostream>
#include <vector>
#include <algorithm>  //min_element()
#include <numeric> //accumulate()
class Score //得分
{
public:virtual ~Score() = default;virtual double  getScore(vector<int> &) = 0;
};class MaxScore :public Score //最高分数
{
public:double getScore(vector<int> &vec)override {if (vec.empty()){return 0.0;}auto score = std::max_element(vec.begin(), vec.end());return *score;}
};class MinScore :public Score //最低分数
{
public:double getScore(vector<int> &vec)override {if (vec.empty()){return 0.0;}auto minScore = min_element(vec.begin(),vec.end());//algorithmreturn *minScore;}
};class AverageScore :public Score //平均分数
{
public:double getScore(vector<int> &vec)override{if (vec.empty()) {return 0.0;}double sum = accumulate(vec.begin(),vec.end(),0.0);//numericreturn sum/vec.size();}
};class Contenxt 
{
public:Contenxt(const vector<int> &scores,Score *pScore) :m_pScore(pScore), m_scoreVec(scores){}void setScore(Score *pScore) {m_pScore = pScore; }double finalScore(){return m_pScore->getScore(m_scoreVec);}
private:Score *m_pScore;vector<int> m_scoreVec;
};

示例测试

这里省去头文件

int main() 
{vector<int> scores = {2,3,6,2,7,4};Contenxt manager(scores,new MaxScore);double finalScore = manager.finalScore();cout << "finalScore =" << finalScore << endl;manager.setScore(new MinScore);double minScore = manager.finalScore();cout << "minscore =" << minScore<< endl;manager.setScore(new AverageScore);double avgScore = manager.finalScore();cout << "avgScore=" << avgScore<< endl;return 0;
}

运行结果

在这里插入图片描述

应用场景

  • 在某个系统中需要实现不同的算法,并且这些算法可以互相替换。
  • 需要根据不同的条件,在运行时动态地选择算法。
  • 算法的实现代码比较复杂,需要将其封装起来,使得代码更具可读性。

优点

避免使用过程中出现分支语句,提高代码的可维护性和扩展性。

总结

策略模式实际上就是一种多态的应用。

http://www.tj-hxxt.cn/news/71764.html

相关文章:

  • php做网站需要学的东西今天发生了什么重大新闻
  • 苏州城乡住房建设厅网站搭建网站步骤
  • 潍坊专业美甲美睫化妆培训机构博客优化网站seo怎么写
  • 免费个人简历模板上海网络推广优化公司
  • 网站推广营销公司简述搜索引擎优化
  • 网站开发与java技术app推广平台网站
  • 金华网站制作推广西地那非片
  • 有站点地图的网站百度灰色关键词技术
  • 山东网络推广优化排名优化营商环境发言稿
  • 建设钓鱼网站网站关键词优化代理
  • 深圳品牌网站设计电话网店运营入门基础知识
  • 做网站前端用什么软件好搜索引擎优化管理实验报告
  • 新手学做网站优化关键词优化是怎么弄的
  • 自己家的电脑宽带50m做网站服务器短链接在线生成免费
  • 山东企业展厅设计公司厦门seo关键词优化代运营
  • 美食网站怎么做dw软件开发公司排行榜
  • 苏州做网站品牌公司滨州网站seo
  • 优秀门户网站欣赏百度的网址怎么写
  • 天津做网站好的公司营销技巧培训
  • 网站策划书优势怎么分析软文是什么意思通俗点
  • wordpress只用不带www汕头seo外包公司
  • 网站建设.pdf百度云360建网站
  • 山西网站建设多少钱神马网站快速排名案例
  • 网站建设公司用5g网店运营公司
  • 做网站的的广告词宁波seo推广方式排名
  • 怎么做流量网站优化网站最好的刷排名软件
  • 网站建设公司运营经验b2b十大平台排名
  • 建设网站的企业专业服务今日头条官网
  • 织梦搭建网站教程商丘网站建设公司
  • 用asp做网站怎么布局建站小程序