zoukankan      html  css  js  c++  java
  • 设计模式--模板方法

    模板方法模式(Template Method)

    定义:模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤的实现延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中某些步骤的具体实现。

    应用举例:

      在系统的导出模块中,两个导出功能的唯一不同点:数据不相同。因此可以使用模板方法模式来设计导出模块。

    设计与实现:

      1、一个抽象父类,导出方法中定义算法骨架。将获取数据的方法,定义为抽象方法。(定义模板)

      2、各个具体导出类,继承该抽象父类,并实现获取数据的抽象方法。(将一些步骤延迟到子类中实现)

    伪代码:

      1、抽象父类:exportBase

      public abstract class exportBase{

        //导出方法模板

        public void export(){

          //下面定义导出的具体步骤,获取到数据后,将数据打包,压缩。

          List<Object> lists = queryDatas();  //获取数据的方法

          //压缩打包

          zipData(lists);

        }

        public abstract List<Object> queryDatas();//将获取数据的方法,定义为抽象类,由各个子类负责实现,获取不同的数据。

      }

      2、具体的导出类A:exportA

      public class exportA extends exportBase{

        public List<Object> queryDatas(){

          //实现具体的获取数据方式

        }

      }

      3、具体的导出类B:exportB  

      public class exportA extends exportBase{

        public List<Object> queryDatas(){

          //实现具体的获取数据方式

        }

      }

      4、调用导出方法

      调用父类定义的导出方法:export()就可以按照我们定义好的模板执行,根据不同子类的queryDatas()方法,获取不同的导出数据。

    优点:

      1、模板的方式,规定了你必须这样做。相比于组合模式,模板方法强调“模板”,模式固定,不能修改。

      2、模板方法中的非抽象方法,只有一份,没有代码冗余。

  • 相关阅读:
    前端Tips#3
    前端Tips#2
    图算法
    【Javascript】重新绑定默认事件
    【Yeoman】热部署web前端开发环境
    添加远程链接MySQL的权限
    background-clip 背景图片做适当的裁剪
    linux系统下将php和mysql命令加入到环境变量中的方法
    background-size 设置背景图片的大小
    multiple backgrounds 多重背景
  • 原文地址:https://www.cnblogs.com/chen--biao/p/9771698.html
Copyright © 2011-2022 走看看