zoukankan      html  css  js  c++  java
  • Template

      模板模式是一种基于继承的松耦合模式,其设计思路为,abstract类提供一组接口但不实现,不同concrete类继承同一接口并完成不同功能。如下图所示:

      模板模式实现较为简单,TemplateMethod方法为暴露给用户的接口,其内部调用Primitive等方法。定义Primitive为纯虚函数,在子类中实现即可。
    用户操作时,需要自己指定concrete,如Template* t = new concrete。然后调用同一的TemplateMethod方法完成操作。
        如上所述,Template方法的基类只提供接口,具体操作由子类实现。其缺点在于子类实现的方法由基类继承而来,不能被其他类所复用。比如,现有一个新类A,(ˇˍˇ)想~复用Concrete的方法是不可能的,因为concrete的方法是从Template继承而来,而不是从A继承而来。
      如果添加现有一个新类A,将template的指针传递给A,在A中调用Template的方法,则能实现concrete方法的复用。同理,添加新类B、C、D亦可。这样设计能够解决上段所述的concrete方法复用问题。对图2-1作出修改,如下所示:

          这种对复用的修改,成全了Strategy策略模式。Strategy模式的右半部分和Template模式一样,区别在于Context类内部维护了一个指向Strategy的指针,接口DoAction调用了Strategy的AlgorithmInterface方法。
  • 相关阅读:
    js判断是移动端还是PC端
    如何删除mysql注释
    Javascript库的产生和解读
    zeptojs库解读3之ajax模块
    zeptojs库解读2之事件模块
    zeptojs库解读1之整体框架
    发起图片请求的几种可能性(webkit内核)
    让zend studio 支持 redis函数自动提示
    4种常见的MySQL日志类型
    redis 安装
  • 原文地址:https://www.cnblogs.com/hgwang/p/5872105.html
Copyright © 2011-2022 走看看