模版方法模式应该知道的事情

                    模版方法模式应该知道的事情

  模版方法模式的UML图:

                                                             模版方法模式应该知道的事情_第1张图片

        

  模版方法模式可以说的上是设计模式里面最简单的一种模式了,它主要作用就是抽象类负责定义子类的实现顺序,和组合,继承类就负责实现父类的抽象方法。很多时候人们都容易忘记有它,但又可以经常使用。原因是很多时候一个框架的开头基本上都是用这种模式做整体设计。所以它必须要知道的有两点:第一点是可扩展性:很多看过spring MVC源码的朋友都可以知道它的可扩展是怎么设计的(后面《spring 必须要知道的事情》系列里面专门介绍),我也写一个可扩展性例子:

   //抽象的开始类
    public abstract class AbstractStart {

	public void init() {
	}

	public void end() {
	}

	public abstract void say();

	public abstract void bye();

	
	public final void start() {
		init();
		say();
		bye();
		end();
	}
    }
    
    //具体的开始子类
    public class Start extends AbstractStart {

	@Override
	public void say() {
		log("say");

	}

	@Override
	public void bye() {
		log("bye");

	}

	public void log(String strLog) {
		System.out.println(strLog);
	}

    }
    //那我的扩展性是怎么实现的呢?其实是一个很简单的使用技巧,就看基本功的一个小事情。
    public class ExStart extends Start{

	@Override
	public void init() {
		log("the start.....");
	}

	@Override
	public void end() {
		log("the end.....");
	}

    }

       第二点就是它和其他设计模式的紧密联系:策略模式和工厂方法模式就是基于模版方法模式的一些变化,具体可以看这两个模式的实现文章。

        顺便提一下:很多时候一些同学都会被面试问道:String可以被继承吗?为什么?那我在这里就想问:start()方法可以被覆盖吗?为什么?


你可能感兴趣的:(模版方法模式,扩展性,模式的组合)