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

如何与老板谈网站建设.net 手机网站源码下载

如何与老板谈网站建设,.net 手机网站源码下载,做百度网络营销推广,淘宝客seo推广教程模式定义 定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。 …

模式定义

定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。
                                                                                                                                                                                    ——《设计模式》GoF

理解:模板方法就是将固定算法流程实现放在父类中实现,将固定流程中的可能变化的步骤定义为虚方法,子类可重写(实现晚绑定)。对于不变的步骤,和算法的实现流程,子类不必关心。子类也不需要关心整个算法实现流程。实现子类的稳定。

示例
整个代码框架:

代码说明


1:在父类greet中定义了方法method1();method2(); method3(); 其中 method1();method3()为greet类的非虚函数。在greet类中实现。method2()为纯虚函数,需要在子类中实现。

 class greet{
public:greet() {}virtual ~greet(){}public:virtual void method2() = 0;private:void method1();void method3();
protect:void greetProcess();
};

整个算法调用的接口在父类中定义和实现

 void greet::greetProcess(){method1();method2();method3();
}

派生类myGreet 继承 greet类,并且重写方法method2

class myGreet : public greet{
public:myGreet() {}~myGreet(){}private:void method2();
};
#endif

 在源文件myMain.cpp 中定义基类指针指向派生类,并且调用基类中的算法流程接口

int main(){greet *baseGreet = new myGreet;baseGreet->greetProcess();delete baseGreet;return 0;
}

代码编译:在buildSh目录下面运行myBuild.sh
运行:buildSh目录下面执行myStart.sh
清理编译文件:buildSh目录下面执行myClean.sh
源码下载地址:设计模式之模板方法测试代码

一个经典的 C++ 源码示例涉及使用模板方法设计模式的场景是 GUI 框架的开发。在这样的框架中,通常会有一个基类定义了一些通用的行为和算法,而具体的子类可以根据需要来实现特定的功能或定制化。

#include <iostream>// GUI 元素基类
class UIElement {
public:// 模板方法:渲染void render() {// 绘制背景drawBackground();// 绘制内容drawContent();// 绘制边框drawBorder();}protected:// 子类必须实现的抽象方法:绘制内容virtual void drawContent() = 0;// 可选的钩子方法:绘制背景,默认实现为空virtual void drawBackground() {}// 可选的钩子方法:绘制边框,默认实现为空virtual void drawBorder() {}
};// 具体的按钮类
class Button : public UIElement {
protected:// 实现绘制内容的具体算法void drawContent() override {std::cout << "Button: Drawing content." << std::endl;}// 实现绘制背景的具体算法void drawBackground() override {std::cout << "Button: Drawing background." << std::endl;}// 实现绘制边框的具体算法void drawBorder() override {std::cout << "Button: Drawing border." << std::endl;}
};// 具体的文本框类
class TextBox : public UIElement {
protected:// 实现绘制内容的具体算法void drawContent() override {std::cout << "TextBox: Drawing content." << std::endl;}// 实现绘制背景的具体算法void drawBackground() override {std::cout << "TextBox: Drawing background." << std::endl;}
};int main() {// 创建一个按钮并渲染Button button;std::cout << "Rendering button:" << std::endl;button.render();std::cout << std::endl;// 创建一个文本框并渲染TextBox textBox;std::cout << "Rendering text box:" << std::endl;textBox.render();return 0;
}

在这个示例中,UIElement 类定义了一个模板方法 render(),它包含了一个固定的渲染算法框架。具体的子类(如 ButtonTextBox)通过实现抽象方法 drawContent() 来定制化自己的渲染内容,而可选的钩子方法 drawBackground()drawBorder() 则允许子类根据需要选择性地覆盖默认行为。

通过使用模板方法设计模式,GUI 框架可以提供一个通用的渲染算法框架,并允许具体的子类在不同的情况下定制化自己的行为,从而实现了代码的灵活性和可扩展性。

http://www.yayakq.cn/news/280111/

相关文章:

  • 淮安制作企业网站新新手手网网站站建建设设
  • 齐河县城乡建设局官方网站建设行业门户网站
  • 网站使用流程图cmd iis重启单个网站
  • 潍坊网站建设 中公北京附近做网站的公司
  • dw如何做网站界面哈什么网一个网站做ppt
  • 你好南京网站销售清单软件永久免费版
  • 哪个网站可以做行程表手机网站开发还是调用
  • 怎么做app和网站购物建立微信群的步骤
  • 做一个网站加优化排名得多少钱海南响应式网站建设方案
  • 软件或网站是怎么做的网站建设大致价格2017
  • 网站建设都需要什么技术人员温江建网站
  • 佛山网站建设推广wordpress分类目录不显示
  • 宣城做网站公司几个免费建立网站的平台
  • 江苏华柯建设发展有限公司网站翻译建设企业网站
  • 沈阳网站网站建设wordpress的模板文件下载
  • 网站下要加个备案号 怎么做找国外客户的网站
  • 大连市城市建设投资集团网站下载类网站 前置备案
  • 微信视频网站怎么做的好网页制作基础教程试卷
  • 大同做网站怎么制作自己的小网站
  • 做网站时候图片和视频放在哪里888浏览器手机下载
  • 上市公司的信息网站沈阳微信网站开发
  • 那个网站专门做婚纱相册湖北城乡建设部网站首页
  • 搜索引擎yandex入口广告优化师属于什么行业
  • 广告公司网站策划怎么制作表白网页
  • portfolio做网站封面设计网站有哪些
  • 找人建设网站河北新出现的传染病
  • 北京网站建设有哪些公司什么专业学网页设计制作
  • 织梦网站英文版怎么做wordpress实现动态功能
  • 移动端网站开发最好的环境官方网站下载手电筒
  • 绍兴做网站价格深圳做分销网站的公司