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

world做网站网络服务合同模板

world做网站,网络服务合同模板,成都网站建设3六六,查询网站建设时间设计模式 19 模板模式 Template Pattern 1.定义 模板模式#xff08;Template Pattern#xff09;是一种行为设计模式#xff0c;它定义了一个算法的骨架#xff0c;将一些步骤的具体实现延迟到子类中。在模板模式中#xff0c;定义了一个抽象类#xff0c;其中包含了一个…设计模式 19 模板模式 Template Pattern 1.定义 模板模式Template Pattern是一种行为设计模式它定义了一个算法的骨架将一些步骤的具体实现延迟到子类中。在模板模式中定义了一个抽象类其中包含了一个模板方法template method这个方法定义了算法的基本结构和步骤但其中的具体步骤由子类来实现。 模板模式主要用于在不同子类中封装通用的行为同时保持整体算法结构的一致性。通过模板方法模式使得父类能够控制方法的执行顺序同时细节延迟到子类实现。 2.内涵 模板模式包含以下几个角色 Abstract Class抽象类定义了一个模板方法该方法是算法的骨架其中调用了一系列抽象或具体的步骤。抽象类可能还包含了一些通用的实现这些实现可以在模板方法中直接调用也可以在需要时在子类中覆盖。Concrete Class具体类继承自抽象类并实现了其中的具体步骤。每个具体类可以根据需要实现抽象类中定义的方法并将其组合在一起形成完整的算法。 通过模板模式可以实现代码复用、减少重复代码的编写同时保持算法的统一性和一致性。模板模式能够提供一个稳定的算法框架同时允许子类自由扩展或修改算法的某些部分。 |      AbstractClass   | |----------------------| | templateMethod()   |   | primitiveOperation1()| | primitiveOperation2()| |||||    ConcreteClassA   ||----------------------||# primitiveOperation1()||# primitiveOperation2()||||||   ConcreteClassB    ||----------------------||# primitiveOperation1()||# primitiveOperation2()| AbstractClass抽象类这是模板模式的核心部分抽象类定义了模板方法 templateMethod() 和两个抽象方法 primitiveOperation1() 和 primitiveOperation2()其中 templateMethod() 指定了算法的框架包括一系列调用步骤而 primitiveOperation1() 和 primitiveOperation2() 则是需要在具体子类中实现的具体步骤。 ConcreteClassA 和 ConcreteClassB具体类这是实际实现模板模式的具体子类。它们继承了 AbstractClass 并实现了其中的抽象方法 primitiveOperation1() 和 primitiveOperation2()。每个具体类可能实现完全不同的具体步骤但是它们遵循相同的模板方法结构templateMethod()。 3.使用示例 /*** The Abstract Class defines a template method */ class AbstractClass {/*** The template method defines the skeleton of an algorithm.*/public:void TemplateMethod() const {this-BaseOperation1();this-RequiredOperations1();this-BaseOperation2();this-Hook1();this-RequiredOperation2();this-BaseOperation3();this-Hook2();}protected:void BaseOperation1() const {std::cout AbstractClass says: I am doing the bulk of the work\n;}void BaseOperation2() const {std::cout AbstractClass says: But I let subclasses override some operations\n;}void BaseOperation3() const {std::cout AbstractClass says: But I am doing the bulk of the work anyway\n;}virtual void RequiredOperations1() const 0;virtual void RequiredOperation2() const 0;virtual void Hook1() const {}virtual void Hook2() const {} };/*** Concrete classes have to implement all abstract operations of the base class.* They can also override some operations with a default implementation.*/ class ConcreteClass1 : public AbstractClass {protected:void RequiredOperations1() const override {std::cout ConcreteClass1 says: Implemented Operation1\n;}void RequiredOperation2() const override {std::cout ConcreteClass1 says: Implemented Operation2\n;} };class ConcreteClass2 : public AbstractClass {protected:void RequiredOperations1() const override {std::cout ConcreteClass2 says: Implemented Operation1\n;}void RequiredOperation2() const override {std::cout ConcreteClass2 says: Implemented Operation2\n;}void Hook1() const override {std::cout ConcreteClass2 says: Overridden Hook1\n;} };void ClientCode(AbstractClass *class_) {// ...class_-TemplateMethod();// ... }int main() {std::cout Same client code can work with different subclasses:\n;ConcreteClass1 *concreteClass1 new ConcreteClass1;ClientCode(concreteClass1);std::cout \n;std::cout Same client code can work with different subclasses:\n;ConcreteClass2 *concreteClass2 new ConcreteClass2;ClientCode(concreteClass2);delete concreteClass1;delete concreteClass2;return 0; } 输出 Same client code can work with different subclasses: AbstractClass says: I am doing the bulk of the work ConcreteClass1 says: Implemented Operation1 AbstractClass says: But I let subclasses override some operations ConcreteClass1 says: Implemented Operation2 AbstractClass says: But I am doing the bulk of the work anywaySame client code can work with different subclasses: AbstractClass says: I am doing the bulk of the work ConcreteClass2 says: Implemented Operation1 AbstractClass says: But I let subclasses override some operations ConcreteClass2 says: Overridden Hook1 ConcreteClass2 says: Implemented Operation2 AbstractClass says: But I am doing the bulk of the work anyway 上述代码类图 4.注意事项 在使用模板模式Template Pattern时有一些注意事项需要注意以避免可能的问题和踩坑 抽象类的设计在定义抽象类时需要仔细考虑模板方法中的逻辑和步骤顺序确保所有子类都能正确实现这些步骤。避免在抽象类中定义过多的具体实现应保持抽象类的简洁性只包含框架结构和必要的抽象方法。子类实现的一致性子类在实现抽象方法时需要保持接口一致性确保方法签名和返回类型与父类中定义的一致。否则可能会导致编译错误或运行时异常。算法的扩展性模板模式允许子类修改或扩展算法的某些部分但注意避免过度扩展和修改以免破坏算法的一致性和规范性。确保扩展的功能是相对独立且有必要的。模板方法的执行顺序模板方法定义了算法的执行顺序子类在实现具体步骤时要遵循这个顺序。任何不当的调整可能会导致算法步骤的混乱或错误。继承的关系模板模式使用了继承机制但应该避免过度使用继承导致类层次结构复杂。确保继承关系的合适性和合理性。钩子方法在抽象类中可以定义钩子方法用于控制算法的某些部分是否执行。需要谨慎设计和使用钩子方法避免影响算法的整体结构和正确性。单一职责原则确保每个具体类只负责实现自己的具体步骤遵循单一职责原则避免一个类承担过多的责任和功能。 5.最佳实践 在开发中实现模板模式Template Pattern时可以采用以下一些比较好的经验 合理抽象和分离关注点在设计抽象类时需要将通用的算法步骤抽象出来同时将具体步骤留给具体子类实现。这样可以实现算法的复用和解耦同时方便后续的扩展和修改。使用钩子方法钩子方法是一种可以控制算法流程的手段可以在抽象类中定义一些空方法或默认实现具体子类可以选择性地重写这些方法来影响算法的执行。这样可以在不改变模板方法结构的情况下灵活地扩展和定制算法。保持一致性确保所有具体子类实现的具体步骤都是与抽象类中定义的一致的保持算法的一致性和规范性避免出现错误或混乱。封装变化部分在设计模板模式时将会变化的部分抽象出来以便随时扩展和修改而将不变的部分固定在模板方法中确保算法的稳定性和可维护性。使用工厂方法在具体类的实例化时可以考虑使用工厂方法模式Factory Method Pattern将实例化过程放在具体的工厂类中以便灵活地切换不同的具体子类。 6.总结 通过模板模式可以实现代码复用、减少重复代码的编写同时保持算法的统一性和一致性。模板模式能够提供一个稳定的算法框架同时允许子类自由扩展或修改算法的某些部分。
http://www.hkea.cn/news/14356939/

相关文章:

  • 网站怎么做优化wordpress不支持php7
  • 一级做a爱免费网站无锡新吴区住房建设和交通局网站
  • wordpress qux主题沙洋县seo优化排名价格
  • 唐山住房和城乡建设局网站专业创建网站
  • 网站系统开发创新的做网站
  • 客户网站留言旅游网站建设背景
  • 廊坊网站快照优化公司网页设计基础教学
  • 网站建设需要什么资料可以做营销任务的网站
  • 怎样做网站备案wordpress 勾子
  • 中国建设银行 英文网站房产信息网的官网链接
  • 制作网站的代码小学生家长网站建设需求
  • 贵州贵州省住房和城乡建设厅网站找人做菠菜网站需要多少钱
  • 网站建设可研建设银行网站显示404
  • 小型企业的网站建设论文建设局局长有实权吗
  • 外卖做的比较好的网站辽宁模板网站建设公司
  • 做网站网站建设教程做网站的大型公司
  • 个人承接网站建设甘肃网络营销是什么
  • 网站开发及服务合同网站设计建设专业服务
  • 谷歌找网站后台让别人做网站的话术
  • 做网站电子版报价模板网页开发者工具怎么用
  • 做一个销售网站需要多少钱做网站是用c 吗
  • 程序员做网站美工能过关吗免费模板建站
  • 丰浩网站建设中心网站建设筹备方案
  • 汽配信息门户网站模板网络推广公司营业执照
  • 金融理财网站建设莲湖微网站建设
  • 儿童网站开发 论文装潢设计装修
  • 肥料网站建设 中企动力平面广告设计要学的软件
  • 做流量网站要做哪一种河北招投标公共服务平台
  • 网站首页布局seo国外校园网站建设
  • 做棋牌开发的网站竞价软件哪个好