美文网首页
设计模式之4模板模式

设计模式之4模板模式

作者: hensenberg | 来源:发表于2019-08-23 14:39 被阅读0次

    小到一份文档,大到一栋建筑。方方面面都有模板的影子。设计模式当然也不例外,模板模式,一起了解下。


    一、什么是模板模式?

    模板模式(Template Pattern)定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。

    通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。

    二、如何实现模板模式?

    1.用UML类图描述模板模式

    UML类图描述模板模式

    2.如何实现模板模式

    抽象父类 具体子类A 具体子类B

    模板模式并不复杂,它的关键是:子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑。

    每当定义一个新的子类时,不要按照控制流程的思路去想,而应当按照“责任”的思路去想。换言之,应当考虑哪些操作是必须置换掉的,哪些操作是可以置换掉的,以及哪些操作是不可以置换掉的。使用模板模式可以使这些责任变得清晰。

    模板方法中的方法可以分为两大类:模板方法和基本方法。

    模板方法:一个模板方法是定义在抽象类中的,把基本操作方法组合在一起形成一个总算法或一个总行为的方法。一个抽象类可以有任意多个模板方法,而不限于一个。每一个模板方法都可以调用任意多个具体方法。

    基本方法:可以分为三种:抽象方法(Abstract Method)、具体方法(Concrete Method)和钩子方法(Hook Method)。

    抽象方法一个抽象方法由抽象类声明,由具体子类实现。在Java语言里抽象方法以abstract关键字标示。

    具体方法一个具体方法由抽象类声明并实现,而子类并不实现或置换。

    钩子方法一个钩子方法由抽象类声明并实现,而子类会加以扩展。通常抽象类给出的实现是一个空实现,作为方法的默认实现。

    三、实际试用的例子

    模板模式在框架中的试用还是非常多的,比如JdbcTemplate,RedisTemplate......

    spring加载配置文件的时候,可以有不同的加载方式,如根据文件系统目录加载配置文件(FileSystemXmlApplicationContext),类路径加载配置文件(ClassPathXmlApplicationContext),以及根据项目上下文目录(XmlWebApplicationContext)加载配置文件。这个在加载的过程中也使用了模板设计模式。

    相关文章

      网友评论

          本文标题:设计模式之4模板模式

          本文链接:https://www.haomeiwen.com/subject/zlazsctx.html