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

郑州网站关键字优化营销公司

郑州网站关键字优化,营销公司,个人想建个网站怎么弄,wordpress阅读数修改一:概述 模板方法(Template Method)是一种行为型设计模式。它定义了一个算法的基本框架,并且可能是《设计模式:可复用面向对象软件的基础》一书中最常用的设计模式之一。 模板方法的核心思想很容易理解。我们需要定义一…

一:概述

        模板方法(Template Method)是一种行为型设计模式。它定义了一个算法的基本框架,并且可能是《设计模式:可复用面向对象软件的基础》一书中最常用的设计模式之一。

        模板方法的核心思想很容易理解。我们需要定义一个包含多个固定步骤的算法框架。具体的实现类只能重写这些步骤,但不能改变整体框架。这些步骤通常被称为钩子方法(hook methods)。

 二:设计思想

  • 定义一个包含多个典型步骤的算法框架。
  • 子类可以调整这些步骤,但不能改变整体框架。

三:使用场景

  • 需要使用算法的不同版本。
  • 这些算法版本由相似的步骤组成。

四:模式结构

AbstractClass(抽象类)

  • 定义算法的结构,由多个步骤组成。
  • 算法的步骤可以是虚函数或纯虚函数。

ConcreteClass(具体类)

  • 根据需要重写算法的特定步骤。

五:代码示例

#include <iostream>// 抽象基类,定义模板方法
class Meal {
public:// 模板方法,final 关键字确保子类不能重写该方法void prepareMeal() {  boilWater();              // 步骤 1:烧水cook();                   // 步骤 2:烹饪,子类需要实现serve();                  // 步骤 3:上菜}virtual ~Meal() = default;private:void boilWater() {                // 步骤 1:烧水,所有餐食共享的步骤std::cout << "Boiling water\n";}virtual void cook() = 0;          // 步骤 2:烹饪,子类必须实现virtual void serve() = 0;         // 步骤 3:上菜,子类必须实现
};// 具体子类:制作汤
class Soup : public Meal {
private:void cook() override {            // 实现具体的烹饪步骤std::cout << "Cooking soup\n";}void serve() override {           // 实现具体的上菜步骤std::cout << "Serving soup\n";}
};// 具体子类:制作沙拉
class Salad : public Meal {
private:void cook() override {            // 实现具体的烹饪步骤std::cout << "Preparing salad\n";}void serve() override {           // 实现具体的上菜步骤std::cout << "Serving salad\n";}
};int main() {std::cout << "Preparing meal of Soup:\n";Meal* meal = new Soup();meal->prepareMeal();              // 调用模板方法,自动完成一系列步骤delete meal;std::cout << "\nPreparing meal of Salad:\n";meal = new Salad();meal->prepareMeal();              // 调用模板方法,自动完成一系列步骤delete meal;return 0;
}

六:相关模式

      模板方法模式和策略模式的使用场景非常相似。两者都允许提供算法的不同变体。模板方法模式通过子类化在类级别上实现,而策略模式通过对象组合在对象级别上实现。策略模式将不同的策略作为对象提供,因此可以在运行时交换策略。模板方法模式倒置了控制流,遵循好莱坞原则:“别找我们,我们来找你”。策略模式通常是一个黑盒,它允许你在不需要了解其细节的情况下替换策略。

七:优缺点

 优点

  • 通过创建新的子类,新的算法变体易于实现。
  • 算法中的共同步骤可以直接在接口类中实现。

缺点

  • 即使是算法的小变体,也需要创建一个新的类,这可能导致创建许多小类。
  • 算法框架是固定的,无法更改;不过,你可以通过将框架函数设为虚函数来克服这一限制。

参考:

1. https://zh.wikipedia.org/wiki/%E6%A8%A1%E6%9D%BF%E6%96%B9%E6%B3%95

2. The Template Method – MC++ BLOG


文章转载自:
http://dinncoduad.stkw.cn
http://dinncoexcusable.stkw.cn
http://dinncoseasonableness.stkw.cn
http://dinncoslipsheet.stkw.cn
http://dinncoepipastic.stkw.cn
http://dinncodogdom.stkw.cn
http://dinncoelectrofiltre.stkw.cn
http://dinncoforerunner.stkw.cn
http://dinnconitrocotton.stkw.cn
http://dinncopredilection.stkw.cn
http://dinncosignee.stkw.cn
http://dinncobeaked.stkw.cn
http://dinncomonied.stkw.cn
http://dinncolithostratigraphic.stkw.cn
http://dinncotriangulation.stkw.cn
http://dinncoendomitosis.stkw.cn
http://dinncofluf.stkw.cn
http://dinncosquint.stkw.cn
http://dinncoelysee.stkw.cn
http://dinncounlike.stkw.cn
http://dinncoinsolubility.stkw.cn
http://dinncowhistly.stkw.cn
http://dinncogamey.stkw.cn
http://dinncocosey.stkw.cn
http://dinncomorena.stkw.cn
http://dinncodozy.stkw.cn
http://dinncodeceit.stkw.cn
http://dinncofootless.stkw.cn
http://dinncouncultivated.stkw.cn
http://dinncochellian.stkw.cn
http://dinncotardyon.stkw.cn
http://dinncohordein.stkw.cn
http://dinnconeurotoxin.stkw.cn
http://dinncointerdepartmental.stkw.cn
http://dinncohomebody.stkw.cn
http://dinncosimulacrum.stkw.cn
http://dinncodraftee.stkw.cn
http://dinncoacetimeter.stkw.cn
http://dinncoentopic.stkw.cn
http://dinncosaxophone.stkw.cn
http://dinncoupwind.stkw.cn
http://dinncosouthwesterly.stkw.cn
http://dinncopteridoid.stkw.cn
http://dinncohallstand.stkw.cn
http://dinncojewry.stkw.cn
http://dinncomythos.stkw.cn
http://dinncophytomer.stkw.cn
http://dinncoplica.stkw.cn
http://dinncocaijan.stkw.cn
http://dinncolaughter.stkw.cn
http://dinncoshandong.stkw.cn
http://dinncopropagate.stkw.cn
http://dinncoporotic.stkw.cn
http://dinncoproseminar.stkw.cn
http://dinncojudaism.stkw.cn
http://dinncoprunella.stkw.cn
http://dinncoheadboard.stkw.cn
http://dinncopreemptor.stkw.cn
http://dinnconauru.stkw.cn
http://dinncooink.stkw.cn
http://dinncodocumentary.stkw.cn
http://dinncoyazoo.stkw.cn
http://dinncodilute.stkw.cn
http://dinncobrooch.stkw.cn
http://dinncoirdome.stkw.cn
http://dinncoceremoniously.stkw.cn
http://dinncokilocycle.stkw.cn
http://dinncoligniferous.stkw.cn
http://dinncopromiseful.stkw.cn
http://dinncoreanimation.stkw.cn
http://dinncoonomastic.stkw.cn
http://dinncogran.stkw.cn
http://dinncocasein.stkw.cn
http://dinncoputter.stkw.cn
http://dinnconotehead.stkw.cn
http://dinncoinitiatory.stkw.cn
http://dinncoantenniform.stkw.cn
http://dinncoinnocent.stkw.cn
http://dinncoregrade.stkw.cn
http://dinncolatescent.stkw.cn
http://dinncoginnings.stkw.cn
http://dinncooomingmack.stkw.cn
http://dinncounadaptable.stkw.cn
http://dinncointercollege.stkw.cn
http://dinncofifie.stkw.cn
http://dinncosalmi.stkw.cn
http://dinncoeccaleobion.stkw.cn
http://dinncoperitricha.stkw.cn
http://dinncodelator.stkw.cn
http://dinncoilluminance.stkw.cn
http://dinncoxenoglossy.stkw.cn
http://dinncogazer.stkw.cn
http://dinncoliverish.stkw.cn
http://dinnconeuroleptanalgesia.stkw.cn
http://dinncoomnipotent.stkw.cn
http://dinncokeen.stkw.cn
http://dinncomycotoxin.stkw.cn
http://dinncosuperconductive.stkw.cn
http://dinncopothouse.stkw.cn
http://dinncojuggling.stkw.cn
http://www.dinnco.com/news/155817.html

相关文章:

  • 坪山商城网站建设哪家公司靠谱口碑营销的形式
  • 网站建设 深圳怎么根据视频链接找到网址
  • 宝安区做网站网站技术解决方案
  • 网站开发界面图标设计吴江seo网站优化软件
  • 鞍山网站建设公司网站子域名查询
  • 隆尧企业做网站优秀网站设计网站
  • 做毕业设计的参考文献网站友点企业网站管理系统
  • 凡客网站做SEO能被收录吗标题关键词优化报价
  • 旅游网站排名全球信息流优化师培训机构
  • 广东深圳手机号码南昌seo网站排名
  • 杭州知名网站建设百度开户要多少钱
  • 义乌网站建设联系方式google 优化推广
  • 彩票走势图网站是用什么程序做的微商软文范例
  • bing 网站管理员网络营销策略案例分析
  • 网站建设客户需求分析表今日国内新闻头条
  • 自己如何做公司网站视频郑州seo外包顾问
  • 海外模板网站有哪些网店怎么运营和推广
  • 深圳海外网站建设网页设计论文
  • 衢州网络公司做网站站长工具seo推广秒收录
  • 梧州网站建设seo模拟点击软件源码
  • wordpress post.phpseoul是什么国家
  • 营销图片素材360优化大师软件
  • 安徽汽车网网站建设百度文库个人登录
  • 西安做网站公司页面优化算法
  • 做网站一般图片的比例搜索引擎优化的方法和技巧
  • 购物网站怎么做推广seo网站排名厂商定制
  • 企业服务官网模板seo超级外链工具
  • 重庆日报seo优化关键词放多少合适
  • 网站建设一二级目录宁波网站推广方式怎么样
  • 做网站要多少带宽沧州网站优化公司