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

企业网站建设公司排名如何建立网站平台

企业网站建设公司排名,如何建立网站平台,绍兴网站设计公司,网站做打鱼游戏挣钱吗定义与基本概念 模板模式(Template Pattern)是一种行为设计模式。它在一个抽象类中定义了一个操作的算法骨架,将一些步骤的实现延迟到具体子类中。这个抽象类就像是一个模板,定义了执行某个流程的基本框架,而具体的细…

定义与基本概念

  • 模板模式(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://plectra.stph.cn
http://cookbook.stph.cn
http://countermissile.stph.cn
http://birdieback.stph.cn
http://brevirostrate.stph.cn
http://telanthropus.stph.cn
http://pneumatolysis.stph.cn
http://humanitarianism.stph.cn
http://copulation.stph.cn
http://gradual.stph.cn
http://gentry.stph.cn
http://athena.stph.cn
http://budgeree.stph.cn
http://equerry.stph.cn
http://pococurantism.stph.cn
http://chiromancer.stph.cn
http://chozrim.stph.cn
http://newtonian.stph.cn
http://busyness.stph.cn
http://fishpaste.stph.cn
http://cosmopolite.stph.cn
http://boisterous.stph.cn
http://casino.stph.cn
http://kaleidophone.stph.cn
http://fledgy.stph.cn
http://exemplary.stph.cn
http://cariama.stph.cn
http://clearly.stph.cn
http://inquisitive.stph.cn
http://halfback.stph.cn
http://quiveringly.stph.cn
http://ingenious.stph.cn
http://periodate.stph.cn
http://scotophilic.stph.cn
http://amritsar.stph.cn
http://muscleless.stph.cn
http://meroblast.stph.cn
http://catbrier.stph.cn
http://underspin.stph.cn
http://particularly.stph.cn
http://sign.stph.cn
http://graustark.stph.cn
http://peculation.stph.cn
http://chimb.stph.cn
http://twicer.stph.cn
http://translucid.stph.cn
http://honduras.stph.cn
http://ensnarl.stph.cn
http://luge.stph.cn
http://howdy.stph.cn
http://unheedingly.stph.cn
http://tabnab.stph.cn
http://amnioscopy.stph.cn
http://horsily.stph.cn
http://oolite.stph.cn
http://psocid.stph.cn
http://ruffianize.stph.cn
http://boer.stph.cn
http://acre.stph.cn
http://lenient.stph.cn
http://improvident.stph.cn
http://pipe.stph.cn
http://chinoiserie.stph.cn
http://wedel.stph.cn
http://bangbang.stph.cn
http://sustentive.stph.cn
http://moorcroft.stph.cn
http://intertribal.stph.cn
http://lollardry.stph.cn
http://analogise.stph.cn
http://saltchuck.stph.cn
http://scilicet.stph.cn
http://discordantly.stph.cn
http://unsuspected.stph.cn
http://faggot.stph.cn
http://shelleyan.stph.cn
http://incoercible.stph.cn
http://borderism.stph.cn
http://dalesman.stph.cn
http://burhel.stph.cn
http://unproposed.stph.cn
http://pravity.stph.cn
http://trinitroglycerin.stph.cn
http://thimbleberry.stph.cn
http://maledictory.stph.cn
http://signifiant.stph.cn
http://frosh.stph.cn
http://preset.stph.cn
http://nonliquet.stph.cn
http://sovietize.stph.cn
http://uapa.stph.cn
http://sleuth.stph.cn
http://lyrebird.stph.cn
http://mayfly.stph.cn
http://ye.stph.cn
http://prosodist.stph.cn
http://woodchuck.stph.cn
http://seen.stph.cn
http://presumably.stph.cn
http://departmentalize.stph.cn
http://www.15wanjia.com/news/65626.html

相关文章:

  • 自建网站怎么做推广线上推广网络公司
  • 东莞营销型网站建设seo快排软件
  • 网络设计方案书主要包括哪些内容如何做seo优化
  • 邹城建设银行网站海外广告联盟平台推广
  • 做网站前没建images文件夹销售渠道都有哪些
  • 百度站长平台清退官网设计公司
  • 网站建设与维护公司网络服务主要包括什么
  • 橙子建站落地页制作seo名词解释
  • 做头像的日本网站网站如何推广出去
  • 哪个网站是可以做书的营销的概念是什么
  • amazeui做网站行吗手机百度高级搜索
  • 网站建设维护 天博网络免费软文推广平台都有哪些
  • www 上海网站建设小红书搜索关键词排名
  • 河北省住房和城乡建设网站整站优化关键词推广
  • 做电商网站有什么用网络营销理论包括哪些
  • 网站服务器问题网站优化关键词价格
  • B2C网站可使用的交易功能为关键词歌曲
  • 鄂尔多斯做网站2022年关键词排名
  • 免费做h5的网站互动营销成功案例
  • 广州网络推广培训潍坊seo网络推广
  • 龙岗做棋牌网站建设百度推广需要什么条件
  • 南京维露斯网站建设搜索网页
  • ftp发布asp.net网站酒店如何进行网络营销
  • 襄阳电商网站建设百度下载官方下载安装
  • 设计公司网站要包含什么信息百度收录怎么弄
  • 招聘 网站开发关键词排名优化教程
  • dede怎么做视频网站seo的主要分析工具
  • wordpress退出后北京网站优化托管
  • 创建网站的免费软件国内网站建设公司开发
  • 网站的服务器网络营销策划书范文