java抽象类应用:模板方法设计模式(Template Method)

抽象类最大的特点是强制规定了子类的实现结构,同时还可以起到模板的作用。

模板方法设计模式(比如定义一个操作中的算法的骨架,将步骤延迟到子类中)的组成:

  • 抽象类:定义算法的骨架,实现了模板方法;
  • 具体类:实现(覆写)抽象类中的抽象方法,得到完整的算法。

举个例子:人和猪都是动物,都能够吃饭、睡觉、“工作”,但是这两类在实现这些动作时肯定是有差别的。
代码示例:

//抽象类的应用——模板方法设计模式
abstract class Animal{//抽象方法
	public final void fun() {//普通方法,防止子类改写,所以加了final关键词
		eat();
		sleep();
		work();
	}
	public abstract void eat();//抽象方法
	public abstract void sleep();//抽象方法
	public abstract void work();//抽象方法
}

class Human extends Animal{//一定要覆写抽象方法
	public void eat() {
		System.out.println("人吃饭");
	}
	public void sleep() {
		System.out.println("人睡觉");
	}
	public void work() {
		System.out.println("人努力工作");
	}
}

class Pig extends Animal{//一定要覆写抽象方法
	public void eat() {
		System.out.println("猪吃饲料");
	}
	public void sleep() {
		System.out.println("猪睡觉");
	}
	public void work() {
		System.out.println("猪努力长肉");
	}
}

public class TemplateDemo {
	public static void main(String[] args) {
		Animal a=new Human();
		a.fun();
		System.out.println("=====================");
		Animal b=new Pig();
		b.fun();
	}
}

运行结果:

人吃饭
人睡觉
人努力工作
=====================
猪吃饲料
猪睡觉
猪努力长肉

总结

  • 抽象类本身就相当于一个模板;
  • 当很多类中都需要实现数个相同的方法时,为了避免代码的重用,可以用抽象类。

猜你喜欢

转载自blog.csdn.net/weixin_41550144/article/details/86509558