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方法。
  • 相关阅读:
    java--递归删除目录
    java--获取文件夹大小
    我经历中最重要的三位老师
    我的自我介绍
    如何判断多选框是否选中?
    控制总线 数据总线和地址总线是三根线吗
    单元格中间没有边框
    页面上插入bootstrap Glyphicons时遇到的问题
    浏览器回退键——重复提交
    【excel】excel转成csv乱码问题
  • 原文地址:https://www.cnblogs.com/hgwang/p/5872105.html
Copyright © 2011-2022 走看看