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

广告支持模式的网站专业的上海网站建设公司排名

广告支持模式的网站,专业的上海网站建设公司排名,成都市网站建设服务商,邢台贴吧定义与基本概念 模板模式#xff08;Template Pattern#xff09;是一种行为设计模式。它在一个抽象类中定义了一个操作的算法骨架#xff0c;将一些步骤的实现延迟到具体子类中。这个抽象类就像是一个模板#xff0c;定义了执行某个流程的基本框架#xff0c;而具体的细…定义与基本概念 模板模式Template Pattern是一种行为设计模式。它在一个抽象类中定义了一个操作的算法骨架将一些步骤的实现延迟到具体子类中。这个抽象类就像是一个模板定义了执行某个流程的基本框架而具体的细节可以由不同的子类根据自身的需求来填充。例如在制作饮品的过程中制作饮品的流程如准备材料、混合材料、添加调料、包装等可以看作是一个模板。不同的饮品如咖啡、茶在这个流程的某些具体步骤如混合材料、添加调料上会有不同的做法但整体的流程框架是相似的。 结构组成 抽象模板Abstract Template类 它定义了一个或多个抽象方法这些方法代表了算法中的某些步骤其具体实现将由具体子类完成。同时抽象模板类还定义了一个模板方法Template Method这个方法规定了算法的骨架它按照一定的顺序调用其他方法包括抽象方法和具体方法。以饮品制作的例子来说抽象模板类可能定义了prepare()抽象方法准备材料、mix()抽象方法混合材料、addSeasoning()抽象方法添加调料、package()具体方法包装和makeDrink()模板方法。makeDrink()方法的实现可能是按照准备材料、混合材料、添加调料、包装的顺序调用其他方法。具体模板Concrete Template类 继承自抽象模板类实现了抽象模板类中的抽象方法。每个具体模板类代表了一种具体的实现方式根据不同的业务需求来填充抽象方法的具体内容。在饮品制作的例子中Coffee类和Tea类是具体模板类Coffee类的prepare()方法可能是准备咖啡豆和水mix()方法可能是研磨咖啡豆后煮咖啡addSeasoning()方法可能是加糖和奶而Tea类的prepare()方法可能是准备茶叶和水mix()方法可能是泡茶addSeasoning()方法可能是加柠檬片。 工作原理 客户端代码创建具体模板类的对象然后调用抽象模板类中定义的模板方法。模板方法在执行过程中会按照预先定义的顺序调用其他方法其中抽象方法的具体实现由具体模板类提供。这样不同的具体模板类就可以在遵循相同算法骨架的基础上实现不同的具体行为。例如在一个数据处理系统中有一个抽象的数据处理模板类它定义了loadData()抽象方法、processData()抽象方法、saveData()具体方法和execute()模板方法。execute()方法按照先loadData()再processData()最后saveData()的顺序调用其他方法。具体的数据处理子类如TextDataProcessor和ImageDataProcessor实现了loadData()和processData()方法以适应不同类型数据的处理方式。当客户端代码调用TextDataProcessor对象的execute()方法时就会按照TextDataProcessor类实现的loadData()和processData()方法以及DataProcessor类抽象模板类定义的saveData()方法来完成文本数据的处理流程。 代码示例 以下是一个简单的 C 模板模式示例以文件处理为例。 首先是抽象模板类 class FileHandler { public:void processFile() {openFile();readFile();processContents();closeFile();}virtual void openFile() 0;virtual void readFile() 0;virtual void processContents() 0;void closeFile() {std::cout 文件已关闭。 std::endl;} };然后是具体模板类以文本文件处理为例 class TextFileHandler : public FileHandler { public:void openFile() override {std::cout 打开文本文件。 std::endl;}void readFile() override {std::cout 读取文本文件内容。 std::endl;}void processContents() override {std::cout 处理文本文件内容。 std::endl;} };另一个具体模板类以二进制文件处理为例 class BinaryFileHandler : public FileHandler { public:void openFile() override {std::cout 打开二进制文件。 std::endl;}void readFile() override {std::cout 读取二进制文件内容。 std::endl;}void processContents() override {std::cout 处理二进制文件内容。 std::endl;} };使用示例 int main() {TextFileHandler textHandler;textHandler.processFile();std::cout ------------------------ std::endl;BinaryFileHandler binaryHandler;binaryHandler.processFile();return 0; }优点 代码复用性高 抽象模板类定义的算法骨架可以被多个具体子类复用。在上述文件处理的例子中processFile()方法的流程打开文件、读取文件、处理内容、关闭文件在文本文件处理和二进制文件处理中都可以使用减少了代码的重复编写。可维护性好 由于算法的骨架和具体步骤的实现分离当需要修改算法的整体流程时只需要在抽象模板类中修改模板方法当需要修改某个具体步骤的实现时只需要在相应的具体子类中进行修改。例如在一个软件系统的用户注册流程中如果需要修改注册的整体流程如增加验证步骤可以在抽象的注册模板类中修改模板方法如果需要修改某个验证方式如密码验证可以在具体的注册子类中修改相应的抽象方法的实现。符合开闭原则 可以很容易地通过创建新的具体子类来扩展系统的功能而不需要修改已有的代码。比如在文件处理系统中如果要增加一种新的文件类型如 XML 文件的处理只需要创建一个新的XMLFileHandler类实现抽象模板类中的抽象方法即可。 缺点 可能导致类层次复杂 如果有多个抽象方法需要具体子类实现并且具体子类的数量较多会导致类层次结构变得复杂。例如在一个复杂的工作流系统中每个工作流步骤都可能有多个抽象方法需要具体子类实现随着工作流类型的增加类的数量和层次结构会变得难以管理。子类的灵活性有限 具体子类必须遵循抽象模板类定义的算法骨架这在一定程度上限制了子类的灵活性。如果某个具体子类需要对算法骨架进行较大的修改可能需要重新设计整个类结构或者采用其他设计模式来解决。
http://www.dnsts.com.cn/news/64075.html

相关文章:

  • 厦门公司网站建设贵州易广建设集团网站
  • 顺义建设工程交易中心网站网站出现404
  • 网站外链建设的15个小技巧wordpress的app怎么用
  • 重庆万州网站建设多少钱请人做网站需要注意什么
  • 如何使用爱站网网站网站建设教程
  • 包河网站建设东莞建设网官方网站首页
  • 网站建设产品图片尺寸要求做网站可不可以模仿
  • 珠海网站设计公司石家庄网红
  • 网站备案单位的联系方式做个网站成本
  • 长治网站建设龙采科技技术支持建立网站需要什么条件
  • 芜湖网站开发广东高端网站建设报价
  • 类似猪八戒的网站建设网站建设的公司业务
  • 智能网站建设模板售后电子商务类网站建设实训报告
  • 济宁市住房和城乡建设局网站做外贸一般做什么
  • 寻找网站建设 网站外包wordpress 中文图片无法显示
  • 彩票创建网站广州新塘做网站
  • m版网站开发做百度网站如何收费
  • 郑州建设企业网站找哪个公司重庆建站多少钱一年
  • 为什么多个网站域名有同个网站备案网络工程师是什么专业
  • 桂林有哪些做网站的电话秦皇岛建设网站官网
  • 没网站做哪个广告联盟百度网络小说排行榜
  • php企业网站后台管理系统如何简单快速的制作网站
  • 网站管理员容易做吗苏州三笑网络科技有限公司
  • 南阳做网站的手机 wordpress html5
  • 做阿里巴巴还是做网站好做楼盘网站
  • 做音乐网站用什么程序网络营销策略有哪些
  • 重庆建设网站的公司国外小型网站
  • 怎么免费建立公司网站河源网站搭建费用
  • 网站里做任务网站建设蛋蛋28
  • 网站设计方案策划网站广告费怎么做分录