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

食品网站应该怎么做有哪些网站是提供设计图片的

食品网站应该怎么做,有哪些网站是提供设计图片的,公司网站的作用意义维护建设管理,汝阳网站建设C设计模式之Template Method Pattern 模式定义核心思想动机(Motivation)结构(Structure)实现步骤应用场景要点总结 模式定义 模式定义: 定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子…

C++设计模式之Template Method Pattern

  • 模式定义
  • 核心思想
  • 动机(Motivation)
  • 结构(Structure)
  • 实现步骤
  • 应用场景
  • 要点总结


模式定义

模式定义: 定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override重写)该算法的某些特定步骤。
它定义了一个算法的骨架,将某些步骤的具体实现延迟到子类中。该模式通过固定算法结构,允许子类在不改变算法流程的前提下重新定义某些步骤。

核心思想

  • 不变流程,可变细节:将算法的公共逻辑封装在基类中,具体步骤的实现交给子类。
  • 避免重复代码:通过复用基类的模板方法,减少子类中的冗余逻辑。
  • 控制扩展点:明确哪些步骤允许子类重写,哪些必须固定。

动机(Motivation)

  • 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。
  • 如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求?

结构(Structure)

在这里插入图片描述

实现步骤

  1. 定义抽象基类

基类中声明模板方法(通常为非虚函数),并定义算法的步骤接口(可以是纯虚函数或虚函数)

abstractclass.h

#include<iostream>//定义抽象基类
class AbstractClass {
public:virtual ~AbstractClass() = default;//模板方法:定义算法骨架(不可被子类重写)void templateMethod() {step1();step2();step3();}
protected://具体步骤(子类必须实现的接口)virtual void step1() = 0;  //纯虚函数virtual void step2() = 0;virtual void step3() {std::cout << "AbstractClass::step3(默认实现)\n";}
};
  1. 实现具体子类

子类重写基类中的步骤方法,提供具体实现

concreteclass.h

#include"abstractclass.h"
class ConcreteClassA :public AbstractClass {
protected:void step1()override {std::cout << "ConcreteClassA:step1 \n";}void step2()override {std::cout << "ConcreteClassA:step2 \n";}//step3使用基类默认实现
};class ConcreteClassB :public AbstractClass {
protected:void step1() override {std::cout << "ConcreteClassB::step1\n";}void step2() override {std::cout << "ConcreteClassB::step2\n";}void step3() override {std::cout << "ConcreteClassB::step3\n";}
};
  1. 示例调用
    main.cpp
#include"concreteclass.h"int main()
{ConcreteClassA objA;objA.templateMethod();   //调用固定流程:step1->step2->step3(默认)ConcreteClassB objB;objB.templateMethod();   //调用流程:step1->step2->step3(自定义)
}
  1. 输出结果
ConcreteClassA:step1
ConcreteClassA:step2
AbstractClass::step3(默认实现)
ConcreteClassB::step1
ConcreteClassB::step2
ConcreteClassB::step3

应用场景

  1. 框架设计:定义框架的流程(如初始化、运行、清理),允许用户自定义具体步骤,即定义抽象基类

gameframework.h

#pragma once
#include<iostream>
class GameFramework {
public:void run() { //模板方法initialize();mainLoop();shutdown();}protected:virtual void initialize() = 0;  //子类实现初始化逻辑virtual void mainLoop() = 0;    //子类实现主循环逻辑virtual void shutdown() {       //默认实现std::cout << "GameFramework::shutdown \n";}
};
  1. 数据处理流程:固定数据读取、处理、保存,允许自定义处理逻辑,即定义抽象基类*
#pragma once
#include<iostream>
class DataProcessor {
public:void process() {//模板方法loadData();analyzeData();saveResult();}protected:virtual void loadData() = 0;virtual void analyzeData() = 0;virtual void saveResult() {std::cout << "Data saved to default path. \n";}
};

要点总结

  • Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。它用最简洁的机制(虚函数的多态性)为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。
  • 除了可以灵活应对子步骤的变化外,“不要调用我,让我来调用你”的反向控制结构是Template Method的典型应用。
  • 在具体实现方面,被Template Method调用的虚方法可以具有实现,也可以没有任何实现(抽象方法、纯虚方法),但一般推荐将它们设置为protected方法。
http://www.dtcms.com/wzjs/797290.html

相关文章:

  • 企业网站设计制作收费南京最新情况最新消息今天
  • 太原网站建设总部在哪机械加工网站哪里找
  • 网站关键词排名如何提升seo推广具体做什么
  • 成都网站运营公司网站如何在工信部备案
  • 云南住房和城乡建设厅网站angular 做的网站
  • 新网网站空间到期停了 咋续费赣州搜赢网络科技有限公司
  • 做企业网站应该注意什么建设网站准备资料
  • wordpress修改首页模板文件名seo推广怎么收费
  • 优化建站seo门户wordpress 底部 时间
  • 汕头网站关键词优化教程做软件工资高还是网站
  • 做我韩国连续剧网站网页制作中怎么添加图片
  • 用dw做教学网站口碑好的网站建设公司
  • 青海省交通建设工程质量监督站网站apt-get install wordpress
  • wordpress+用户前台网站的优化是什么意思
  • 社区门户网站模板营销引流100个技巧
  • 山东网站建设维护网页布局设计说明
  • 软件开发资源网站汕头网站设计浩森宇特
  • 专业网站制作网站公司伊宁市住房与城乡建设局网站
  • 旅游网站建设 策划书网络营销有哪些推广方法
  • 织梦做的网站有点慢一个网站做多有几种颜色
  • 乐山旅游英文网站建设wordpress 云主机配置
  • 小程序要先做网站photoshop快捷键命令大全
  • ppt里做网站效果海外营销推广方案
  • 信宜网站建设公司东莞 塑胶 网站建设
  • 英文网站的建设意义seo视频教程
  • 怎么用网吧电脑做网站服务器司瓦图网站
  • 网站推广技术哪家好百度网页制作html
  • 梅县区住房和城乡规划建设局网站天元建设集团有限公司董事长张桂玉
  • 营销型网站有那些网站wordpress 地图导航
  • 切实加强门户网站建设吴江区网站建设