模版模式:设计模式系列(十七)

  模版模式(Template Pattern):是让祖先类把算法框架定义好后,让子孙类在不改变框架的情况下扩展或重定义相关算法的设计模式,归类为行为型模式。

  这一模式的解读分为以下几个方面:

  • 需要祖先类吧框架定义好。
  • 继承了祖先类的子孙类能根据需要扩展或重定义算法。
  • 子孙类不能改变算法框架。

  使用模版模式的思考过程如下:

  1. 项目有需要统一的接口。
  2. 接口相关的类的框架已经被定义好了。
  3. 继承模版类的子孙类可以扩展或重定义算法,但不能修改框架,因为可能会影响调用接口的功能。

  明确一下结构,模版模式结构包含定义好框架的祖先类、继承祖先类的子孙类。

模版模式示例代码如下(Swift语言):

class Template{
    
    func step1(){
        print("step 1");
    }
    
    func step2(){
        print("step 2");
    }
    
    func step3(){
        print("step 3");
    }
    
    final func excute(){
        self.step1();
        self.step2();
        self.step3();
    }
}

class Object:Template{
    
    override func step1() {
        print("Object 1");
    }
    
    override func step2() {
        print("Object 2");
    }
    
    override func step3() {
        print("Object 3");
    }
}

var object:Template = Object();
object.excute();

  代码分析:代码比较简单也很好理解,Object是继承了Template的子孙类,并重写了step1step2step3三个方法,但是无法重写被final关键字的excute方法,于是Object类就不能改变祖先类Template调用框架。以上代码的输出结果如下:

Object 1
Object 2
Object 3

  总结:模版模式通常会被架构师使用,然后交给Coder填充或扩展算法代码,是一种在项目中能提高开发效率的设计模式。


lZackx © 2022. All rights reserved.

Powered by Hydejack v9.1.6