设计模式_模版模式(Template Pattern)

模板模式比较简单的一种设计模式,他以抽象类抽出公共的方法;由子类实现。就像一个模版一样的。每继承一个都要实现里面公告的方法。大家会说这不就是做项目的时候写的baseDao吗?没错。就是这个样的应用。

里面会有一种方法要注意下。就是钩子的使用。是指公共类中有一个抽象的方法,但是这个方法不是每个对象都需要调用的。也可能不调用,比如汽车模型,有一个需要实现喇叭的功能,但是有一个不需要使用;这样的场景下就可以使用钩子的模式。


基本类图。



代码实现。

public abstract class CarT {
	protected boolean hook = true;
	
	protected abstract void startCar() ;
	protected abstract void stopCar() ;
	
	final public void carRun(){
		this.startCar();
		System.out.println("汽车运行中");
		if(this.hook){
			this.isWhistled();
		}
		this.stopCar();
	}
	
	final public void isWhistled(){
		System.out.println("汽车鸣笛");
	}
	
	public void setHook(boolean _flag){
		this.hook = _flag;
	}
}


public class CarA extends CarT {
	public void startCar(){
		System.out.println("汽车A启动声音是嘟嘟~");
	}

	@Override
	public void stopCar() {
		System.out.println("汽车A停止声音是滴滴~");
	}
}	
public class CarB extends CarT {

	@Override
	protected void startCar() {
		System.out.println("汽车B启动的声音是咚咚~");
	}

	@Override
	protected void stopCar() {
		System.out.println("汽车B启动的声音是叮叮~");
	}

}

public class client {
	public static void main(String args[]){
		CarT carA = new CarA();
		carA.setHook(false);
		carA.carRun();
		System.out.println("======");
		CarT carB = new CarB();
		carB.carRun();
	}
	
}

这是一个比较简单的一个设计模式。大家应该都见过的。

猜你喜欢

转载自blog.csdn.net/my_God_sky/article/details/52621109