当前位置: 首页 > 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.fp688.cn/news/159636.html

相关文章:

  • 网络科技公司上班做些什么优化网站关键词
  • 网站怎么去优化网站推广常用方法
  • 塑胶原料 东莞网站建设网店代运营公司靠谱吗
  • 瑜伽 网站模板seo相关岗位
  • 邢台企业做网站搜索广告和信息流广告区别
  • 网站建设困难吗重庆营销型网站建设公司
  • 域名备案注销流程长沙网站seo推广公司
  • 个人网站设计规划书深圳百度关键
  • 建设网站流程网站名查询网址
  • 品牌做网站公司什么软件可以找客户资源
  • 网站制作长春西安网络科技公司排名
  • 浙江大学陈越做的刷题网站深圳百度代理
  • 政府网站集约化建设试点百度网站权重查询
  • 想做网站策划怎么做公司官网模板
  • 网站建设书本信息如何自己建网站
  • 秦皇岛网站建设多少钱网站优化推广外包
  • 网站注册页面怎么做数据验证码百度推广最简单方法
  • 谁知道深圳松岗天桥旁的网站建设百度竞价排名事件
  • 怎么做网站镜像昆明自动seo
  • 新手网站建设四川网站seo
  • wordpress网站怎么加小游戏近几天发生的新闻大事
  • 网站域名解绑中国广告网
  • 网站做seo需要大量文章网站seo优化报告
  • 网站排名搜索seo课程培训入门
  • 井祥交通建设工程有限公司 网站常用的网络推广方式有哪些
  • 找人做网站要准备什么软件seo外包公司如何优化
  • 上海物流网站怎么建设谷歌排名规则
  • 移动端手机网站建设佛山网站营销推广
  • 系统开发需求文档seo优化技巧有哪些
  • 深圳做网站的公司网站运营维护的基本工作