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

设计模式之模块方法

定义

模板与方法应该是最常使用的设计模式,在GOF(设计模式)中的定义:定义一个操作中的算法的骨架 ,而将一些步骤延迟到子类中。 Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

要点

最常用的设计模式,子类可以复写父类子流程,使父类的骨架流程丰富;
反向控制流程的典型应用;
父类 protected 保护子类需要复写的子流程;这样子类的子流程只能父类来调用;
本质
通过固定算法骨架来约束子类的行为;
在这里插入图片描述
示例代码:

//程序库开发人员
class Library{
public:
	//稳定 template method
    void Run(){
        
        Step1();

        if (Step2()) { //支持变化 ==> 虚函数的多态调用
            Step3(); 
        }

        for (int i = 0; i < 4; i++){
            Step4(); //支持变化 ==> 虚函数的多态调用
        }

        Step5();

    }
	virtual ~Library(){ }

protected:
	
	void Step1() { //稳定
        //.....
    }
	void Step3() {//稳定
        //.....
    }
	void Step5() { //稳定
		//.....
	}

	virtual bool Step2() = 0;//变化
    virtual void Step4() =0; //变化
};
//应用程序开发人员
class Application : public Library {
protected:
	virtual bool Step2(){
		//... 子类重写实现
    }

    virtual void Step4() {
		//... 子类重写实现
    }
};




int main()
	{
	    Library* pLib=new Application();
	    lib->Run();

		delete pLib;
	}
}



http://www.kler.cn/a/380583.html

相关文章:

  • 【读书笔记】《论语别裁》爱与罪
  • springboot/ssm私房菜定制上门服务系统Java代码编写web厨师上门做菜
  • Linux下编译安装Kokkos
  • StartAI图生图局部重绘,让画面细节焕发新生!!
  • Mac mini m4安装PD和Crack和关闭SIP
  • kkfileview代理配置,Vue对接kkfileview实现图片word、excel、pdf预览
  • 商品满减、限时活动、折扣活动的计算最划算 golang
  • PyCharm中pylint安装与使用
  • 2025年上半年软考高级科目有哪些?附选科指南
  • HTML和CSS 介绍
  • 搞懂>>>、/deep/、::v-deep、::v-deep()和:deep()的区别与用法
  • 从APP小游戏到Web漏洞的发现
  • 【Java多线程】:理解线程创建、特性及后台进程
  • 【Linux】基础指令
  • 【连续多届检索,ACM出版】第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024,11月15-17)--冬季主会场
  • mqsql 场景函数整理
  • Browserslist 配置
  • Golang Gorm实现自定义多态模型关联查询
  • Python 淘宝商品销量采集 API 实战指南
  • 动态与静态网站抓取的区别:从抓取策略到性能优化
  • 阿里云-部署CNI flannel集群网络
  • JavaEE-多线程初阶(3)
  • 前端存储大量数据indexedDB
  • C++优选算法四 前缀和
  • 一、SpringMVC简介
  • Flutter鸿蒙next中封装一个列表组件