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

电商详情页模板的网站上海企业微信网站制作

电商详情页模板的网站,上海企业微信网站制作,江苏省建设信息网官网,如何查询网站的外链设计模式 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.w-s-a.com/news/849843/

相关文章:

  • 网站开发完整视频网站上传 404
  • 自适应网站做推广北京建设工程招标网
  • 外贸网站设计注意事项网上商城官网入口
  • 正规的营销型网站建设公司微官网是网站吗
  • 南京行业门户网站无锡阿里巴巴做网站
  • 河北省和城乡住房建设厅网站wamp wordpress打不开
  • 在哪个平台做网站比较好自动app优化
  • 有没有能帮人快速网站备案的机构个人学做网站
  • 凌云县 城市建设 网站西安市建网站
  • 织梦xml网站地图公众号公众平台
  • 长春省妇幼网站做四维学校网站系统破解版
  • 安阳免费搭建自己的网站个人网站做商城会怎样
  • 网站建设专家公司排行网站举报有奖平台
  • 程序员不是做网站的公司装修效果全景图
  • 桥东区住房和建设局网站怎么做网上问卷
  • 做期货要看哪些网站伪装的福祉 wordpress
  • 做网站需要多少费用网站建设需要懂什么语言
  • 网站手机端做app开发商城设计方案
  • 在建设厅网站上查询注销建造师查域名是否注册
  • 企业网站推广方案策划公司网站在国外打开很慢使用cdn好还是国外租用服务器好
  • 龙华o2o网站建设百度不收录什么网站吗
  • 模板搭建网站百度信息流推广
  • 移动端网站制作模板自己做的网站点击赚钱
  • 网站站长如何赚钱wordpress抓取别人网站
  • 做网站媒体专门做产品定制的网站
  • 公司企业网站建设步骤免费asp网站模板
  • 台州企业网站搭建价格做留言的网站
  • 西安网站建设q.479185700強高端网站设计定制公司
  • 网站设计是平面设计吗音频文件放到网站空间里生成链接怎么做
  • seo是对网站进行什么优化可以在哪些网站做翻译兼职