设计模式:2、模板模式

版权声明:本文为博主原创文章,不得随意转载,转载请注明出处!!! https://blog.csdn.net/YuDBL/article/details/85888583

声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!!

一、简要介绍

模板模式

1、定义一个操作中的算法过程的骨架,而将部分细节操作延迟到子类去实现。

2、模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。

3、通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。

 

二、实例代码

抽象父类(AbstractClass):实现了模板方法,定义了算法的骨架。

具体类(ConcreteClass):实现抽象类中的抽象方法,即不同的对象的具体实现细节。

1、实例: 介绍自己      

---模板类(抽象父类):人    

---实现模板类的对象(具体类):学生、老师

2、具体代码

(1)模板类(抽象父类):人    

/**
 * @author luminal
 * 模板模式 
 * 实例: 介绍自己
 * -->模板类
 */
public abstract class PersonModel {
	//介绍自己
	public void sayMySelf(){
		//打招呼
		System.out.println("大家好!");
		//介绍自己的名字
		System.out.println("我叫"+getName());
		//介绍自己的情况
		System.out.println(getInfo());
		//说拜拜
		System.out.println(sayGoodBye());
	}
	
	public abstract String getName();
	
	public abstract String getInfo();
	
	public abstract String sayGoodBye();
	
}

(2)实现模板类的对象(具体类):学生、老师

/**
 * @author luminal
 *	学生类-->实现类, 实现模板类
 */
public class Student extends PersonModel{

	public String getInfo() {
		// TODO Auto-generated method stub
		return "我在北京, 我喜欢篮球!";
	}

	public String getName() {
		// TODO Auto-generated method stub
		return "luminal";
	}

	public String sayGoodBye() {
		// TODO Auto-generated method stub
		return "bye!";
	}
	
}
/**
 * @author luminal
 *	老师类-->实现类, 实现模板类
 */
public class Teacher extends PersonModel{

	public String getInfo() {
		// TODO Auto-generated method stub
		return "我是老师, 毁人不倦";
	}

	public String getName() {
		// TODO Auto-generated method stub
		return "苍某某";
	}

	public String sayGoodBye() {
		// TODO Auto-generated method stub
		return "see you later!";
	}

}

(3)测试打印

/**
 * @author luminal
 *	测试类: 调用输出
 */
public class TestModel {
	public static void main(String[] args){
		//父类引用 接收 子类对象 , 调用模板方法
		PersonModel p1 = new Student();
		p1.sayMySelf();
		
		PersonModel p2 = new Teacher();
		p2.sayMySelf();
		
	}
}

猜你喜欢

转载自blog.csdn.net/YuDBL/article/details/85888583