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

广告支持模式的网站微信开发者版

广告支持模式的网站,微信开发者版,现在做网站有前途吗,html5 服装网站定义与基本概念 模板模式#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.hkea.cn/news/14380649/

相关文章:

  • 怎么做黑彩黑彩网站做旅行网站多少钱
  • 彩票网站注册wordpress 一年好贵
  • 济南网站公司哪家好哪个网站最好
  • 营销网站建设软件下载网站建设多钱
  • 分享网站排名做视频网站对服务器要去
  • 海南城乡建设庁网站织梦图片网站
  • 北京网站设计研究与开发公司前端开发一般用什么软件
  • 旅游网站组织结构图怎么做广州制作网站seo
  • 青海西宁做网站多少钱做商业网站需要注册公司吗
  • 合阳县建设局网站网站轮播图怎么设计
  • 网站版心怎么做wordpress照片模糊
  • 密云区免费网站建设wordpress 评论时间
  • 如何提高用户和网站的互动性软件开发者怎么赚钱
  • 公司网站上线流程wordpress apache nginx
  • 易语言怎么制作网站建立一个网站需要人员
  • 上海做网站的的公司莱芜金点子租房信息港
  • 怎样提升网站流量wordpress小工具制作
  • 简洁网站模板下载黄骅住房和城乡建设局网站
  • 工信部网站域名查询wordpress 阿里短信
  • 成都网站建设公司哪家专业公司网站域名申请流程
  • 国家和住房城乡建设部网站首页网站开发培训课程表
  • 企业网站建设方案怎么写网站建设的必要
  • 家具网站建设策划方案谁有凡科网做的网站
  • 公司网站形象中文网站模板大全
  • 医社保增减员在什么网站做网站开发开票编码归属
  • 济南网站建设和网络推广哪个好宁波seo快速优化课程
  • 网站怎么做多级菜单溧阳网站建设中心
  • 云尚网络科技有限公司网站建设苏州个人网站制作公司
  • 网站备案域名更改吗阿里免费域名申请
  • 女人与狗做网站罗湖中心区做网站