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

咸阳网站建设价格手机网站无响应

咸阳网站建设价格,手机网站无响应,手机上可以编程的app,网站后台栏目根据什么做的模板方法模式是一种行为设计模式,它通过定义一个算法的骨架,而将一些步骤延迟到子类中实现。Template Method 使得子类可以不改变(复用)一个算法结构 即可重定义(override 重写)该算法的某些特定步骤。基本…

模板方法模式是一种行为设计模式,它通过定义一个算法的骨架,而将一些步骤延迟到子类中实现。Template Method 使得子类可以不改变(复用)一个算法结构 即可重定义(override 重写)该算法的某些特定步骤。

基本结构

// 抽象类定义模板方法和基本操作
class AbstractClass {
public:// 模板方法,定义算法骨架(通常声明为final防止子类覆盖)void templateMethod() const {this->baseOperation1();this->requiredOperation1();this->baseOperation2();this->requiredOperation2();}// 基类中已实现的操作void baseOperation1() const {std::cout << "AbstractClass: 执行基础操作1\n";}void baseOperation2() const {std::cout << "AbstractClass: 执行基础操作2\n";}// 需要子类实现的纯虚函数virtual void requiredOperation1() const = 0;virtual void requiredOperation2() const = 0;// 虚析构函数virtual ~AbstractClass() = default;
};

开发人员只需继承AbstractClass  重写其中的虚函数然后调用templateMethod()即可

/ 具体实现类1
class ConcreteClass1 : public AbstractClass {
public:void requiredOperation1() const override {std::cout << "ConcreteClass1: 实现操作1\n";}void requiredOperation2() const override {std::cout << "ConcreteClass1: 实现操作2\n";}
};// 具体实现类2(带钩子方法覆盖)
class ConcreteClass2 : public AbstractClass {
public:void requiredOperation1() const override {std::cout << "ConcreteClass2: 实现操作1\n";}void requiredOperation2() const override {std::cout << "ConcreteClass2: 实现操作2\n";}void hook() const override {std::cout << "ConcreteClass2: 覆盖钩子方法\n";}
};

具体调用

int main() {std::cout << "同一客户端代码可以处理不同子类:\n";AbstractClass *concreteClass1 = new ConcreteClass1();concreteClass1->templateMethod();std::cout << "\n同一客户端代码可以处理不同子类:\n";AbstractClass *concreteClass2 = new  ConcreteClass2();concreteClass2->templateMethod();return 0;
}

uml图

应用场景

  1. 框架设计:定义框架的流程,允许用户自定义特定步骤

  2. 算法骨架固定:当多个类有相似算法但实现细节不同时

  3. 代码复用:将公共行为提取到父类中

  4. 控制子类扩展:限制子类只能修改算法的特定部分

优点

  1. 提高代码复用性,避免重复代码

  2. 良好的扩展性,符合开闭原则

  3. 便于维护,算法修改只需在父类中进行

  4. 反向控制结构,父类控制整体流程

缺点

  1. 每个不同的实现都需要一个子类,可能导致类数量增加

  2. 通过继承实现,可能违反组合优于继承的原则

  3. 父类与子类之间紧密耦合

实际应用示例

  1. STL中的分配器(allocator):定义内存分配算法框架

  2. GUI框架:如窗口显示流程固定,具体绘制由子类实现

  3. 单元测试框架:定义测试流程(setUp, test, tearDown)

  4. 编译器设计:编译流程固定,具体语法分析等步骤可变


文章转载自:

http://tQ7zkH2d.gmwqd.cn
http://Qarbv2Iq.gmwqd.cn
http://QCKt1auu.gmwqd.cn
http://dHRpWPV0.gmwqd.cn
http://tgeCKypz.gmwqd.cn
http://eWkCKypA.gmwqd.cn
http://EM8I2hEp.gmwqd.cn
http://PTCJNRw4.gmwqd.cn
http://tCRgb2M7.gmwqd.cn
http://M4VsLEjw.gmwqd.cn
http://ngpXrlPW.gmwqd.cn
http://2moRsFRp.gmwqd.cn
http://aLFSlNAk.gmwqd.cn
http://8qgjjMph.gmwqd.cn
http://Tw2f8x9p.gmwqd.cn
http://ZvZ4SLfO.gmwqd.cn
http://NTwaXjWK.gmwqd.cn
http://hsysb19I.gmwqd.cn
http://6wfKYByz.gmwqd.cn
http://d8Ej8YXW.gmwqd.cn
http://dIiyb3pf.gmwqd.cn
http://Ba7xTx1i.gmwqd.cn
http://138FbyHj.gmwqd.cn
http://t3rI7l9p.gmwqd.cn
http://s0UujyzM.gmwqd.cn
http://bFA8XHfP.gmwqd.cn
http://51RO17L5.gmwqd.cn
http://gL074oak.gmwqd.cn
http://1HyQjPWd.gmwqd.cn
http://vY4O9icQ.gmwqd.cn
http://www.dtcms.com/wzjs/638303.html

相关文章:

  • 网站建设必要步骤软件开发流程图绘制
  • 网站建设前台后台设计历史权重查询
  • 一个网站怎么做软件好用临西企业做网站
  • 自己的网站是什么样子的wordpress的pjax主题
  • 四川网站建设seo优化从seo角度谈网站建设
  • o2o电商网站建设贵州省建设银行招聘网站
  • 云南网站开发网络公司前10惠州市网站开发
  • win7 网站建设网站后台编辑器无法显示
  • 做网站可以用中文域名备案嘛深圳松岗做网站
  • 网站 外包方案湖南招标网官网
  • 怎么才能创建网站贵阳网站开发报价
  • 防伪查询网站wordpress 图库插件
  • 网站建设 收费明细东方购物网上商城
  • 湖南英文网站建设山西 旅游 英文 网站建设
  • 如何新建网站做网站运营
  • 建设一个购物网站需要什么意思网店运营规划
  • 方正园林建设监理中心网站网站中页面链接怎么做的
  • 网站开发培训教程平台推广图片
  • 南宁市建设工程质量监督站网站广州地铁最新运营调整
  • 青海省公路建设管理局门户网站wordpress 飘窗
  • 《高性能网站建设》360免费创建个人网站
  • 伍佰亿是什么网站临沂建设局网站
  • 深圳 三人 网站建设使用joomla的网站
  • 免费网站安全软件旅游网站建设论文
  • 合伙合同网站建设协议ppt模板免费下载 素材中国风
  • 即墨网站建设哪里有淘宝客做网站链接
  • 网站备案复查 手机号码打不通wordpress 文章 页面 区别
  • 眉山市做网站的公司遵义怎样做网站
  • xwiki做的网站佛山新网站建设如何
  • 用ps做企业网站分辨率是多少钱攻城霸业手游下载