设计模式:模板方法(Template Method Pattern)

  模板方法模式: 在一个抽象类公开定义了执行它的方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 属于行为型模式。

  spring ioc容器初始化时运用到模板方法模式。

// 抽象类,表示豆浆
public abstract class SoyMilk {
	
	// 模板方法可以做成final,不让子类覆盖
	final void make(){
		select();
		addCondiments();
		soak();
		beat();
	}
	
	void select(){
		System.out.println("第一步: 选择好的新鲜黄豆 ");
	}
	
	abstract void addCondiments();
	
	// 浸泡
	void soak(){
		System.out.println("第三部: 黄豆和配料开始浸泡,需要3个小时 ");
	}
	
	void beat(){
		System.out.println("第四部: 黄豆和配料放到豆浆机去打碎 ");
	}
}


public class RedBeanSoyaMilk extends SoyMilk{

	@Override
	void addCondiments() {
		System.out.println("加入上好的红豆...");
	}
}


public class PeanutSoyaMilk extends SoyMilk{

	@Override
	void addCondiments() {
		System.out.println("加入上好的花生...");
	}
}


public class Client {
	public static void main(String[] args){
		System.out.println("制作红豆豆浆");
		SoyMilk redBeanSoyaMilk = new RedBeanSoyaMilk();
		redBeanSoyaMilk.make();
		
		System.out.println("制作花生豆浆");
		SoyMilk peanutSoyaMilk = new PeanutSoyaMilk();
		peanutSoyaMilk.make();
	}
}

   

发布了557 篇原创文章 · 获赞 40 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/m0_37564426/article/details/103709397