三:聊一聊模板方法模式

1.首先了解一下什么是模板,模板我理解的就一种套路,比如我们经常看小说的,就会经常吐槽小说
    都是同一种套路,少年家道中落,筋脉被废,掉下山崖,捡到神功秘籍等等。套路是这么一个套路,
    但是内容还是不一样的。对应的模板方法模式的概念就出来了。
    总结(画重点哩):模板方法模式就是:公共的方法,不同的实现。
2.核心思想是知道了,那么使用场景是什么呢?什么场景又会满足又有相同的逻辑,又需要有不同的
   实现呢?最先冒出来的就是一些公共的代码逻辑,我们会封装成一个公共方法,供不同的接口调用。
    这种思想是满足的,但是还是有个缺点,在每次需要调用这个公共方法的时候,不同的接口里面,
    都会有这么一段公共方法的代码。万一有一天你这公共方法的名称要改,那不是要改很多地方。
3.场景聊完了,那么怎么去实现一个模板方法模式哩?
    a.首先思考一下,在java里面什么能满足公共的方法,不同的实现?也就只有抽象类里面的抽象
      方法吧,父类的抽象方法不需要去实现,交由继承的子类去实现,这不就是多态的核心概念嘛
    b.创建一个接口XXXInterface,里面一个方法XXXmethod(),面向对象编程嘛,接口少不了哈
    c.定义一个抽象模板类TemplateClass,实现接口XXXInterface的方法,里面还需要有两个方
      法,一个是将公共的逻辑抽取出来的方法,一个是需要不同子类去实现的抽象方法,将这两个
      方法放到需要实现的XXXmethod()方法里

public static abstract class TemplateClass implements XXXInterface{
        public final void XXXmethod(){
          commonLogic();
          patternMethod();
        }
        private void commonLogic(){
          System.out.println("公共逻辑");
        }
        protected abstract void patternMethod();
}

 e.然后不同的子类,继承这个抽象的模板类,并实现模板类的抽象方法
 f.最后我们在使用这个模板方法模式的时候,如下,即可

      TemplateClass templateClassA = new AClass();
      templateClassA.XXXmethod();
      TemplateClass templateClassB = new BClass();
      templateClassB.XXXmethod();
      TemplateClass templateClassC = new CClass();
      templateClassC.XXXmethod();

 

你可能感兴趣的:(java,设计模式)