模板方法模式

一、概念

        模板方法模式:定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤。

二、UML类图


三、基本代码实现

1、AbstractClass,定义了算法的骨架

public abstract class AbstractClass {

        public abstract void primitiveOperation1();

        public abstract void primitiveOperation2();

        public void templateMethod(){

                    primitiveOperation1();

                    primitiveOperation2();

        }

}

2、ConcreteClassA ,ConcreteClassB,实现需要实现的方法

public class ConcreteClassA extends AbstractClass{

        @Override

        public void primitiveOperation1() {

            System.out.println("具体类A方法1实现");

        }

        @Override

        public void primitiveOperation2() {

            System.out.println("具体类A方法2实现");

        }

}

public class ConcreteClassB extends AbstractClass{

        @Override

        public void primitiveOperation1() {

            System.out.println("具体类B方法1实现");

        }

        @Override

        public void primitiveOperation2() {

            System.out.println("具体类B方法2实现");

        }

}

5、测试类

public class Main {

    public static void main(String[] args) {

        AbstractClass c =new ConcreteClassA();

        c.templateMethod();

    }

}

四、总结

        模板方法模式通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。模板方法提供了一个很好的代码复用平台。有时候,我们会遇到由一系列步骤构成的过程需要执行。这个过程从高层次上看是相同的,但有些步骤的实现有些不同,这时候,我们可以考虑使用模板模式。

        当不变的行为和可变的行为在子类的方法实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.模板方法模式简介 定义一个操作中算法的骨架,而将这些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构...
    起个名字好纠结阅读 974评论 0 5
  • 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类,模板方法使得子类可以不改变一个算法即可定义算法的某...
    超级大鸡腿阅读 263评论 0 0
  • 1. 定义 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一...
    SyncAny阅读 289评论 0 0
  • 1. 概述 定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算...
    时待吾阅读 380评论 0 0
  • 今天是大年初一,大家过年好! 这样特别的日子,你是宅在家看电视嗑瓜子吃桔子聊天呢?还是出去走亲戚访好友话亲热拜年问...
    浩与瀚阅读 1,769评论 8 20