设计模式读书笔记之模版方法模式(Template)

模版方法模式:定义了一个算法/流程骨架,但是将一些步骤推迟到子类中去实现

//模版
package designpattern.template;
public abstract class Template {
	private void step1(){
		System.out.println("This is the first step.");
	}
	protected abstract void step2();
	private void step3(){
		System.out.println("This is the third step.");
	}
	public void process(){
		step1();
		step2();
		step3();
	}
}
//实现类
package designpattern.template;

public class Concrete extends Template{
	protected void step2() {
		System.out.println("This is the second step, it's implemented in sub class");
	}
}
//上下文
package designpattern.template;
public class Context {
	private Template t;
	public Context(Template t){
		this.t = t;
	}
	public void process(){
		t.process();
	}
//test case
	public static void main(String[] args) {
		Context c = new Context(new Concrete());
		c.process();
	}
} 

特点:

把公共的代码或不变的行为放在超类/模版中, 以隔离变化和不变,使不便的部分可复用。

模板方法的核心精神在于把已知的部分(不变化的部分)放在超类中被公用, 而把未知的部分(易变化,不确定的部分)留给子类各自去实现.

你可能感兴趣的:(设计模式,C++,c,算法,读书)