设计模式的学习之路 --- 第一站(模板模式)

前言:
作为设计模式里面最简单的设计模式之一,却被广泛使用的。作为学习设计模式的开篇真=真是再适合不过了。
这个设计模式之中仅仅使用了继承关系。虽然Java里面因为单继承、多实现的原因不建议过多的使用继承,

但是今天通过模板模式的学习还是可以发现继承的很多的优点的存在。对于以后系统设计结构的优化还是很有好处的。


模板模式的定义:
模板模式(Template Mode):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。可以使子类可以不改变一个算法的结构 就可以重新定义算法中的某些步骤。

模板模式中的角色:

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

具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。

模板模式的实例:

1.先定义抽象类

package testTemplateMode;
/**
 * 抽象类(AbstractClass)
 * 实现了模板方法,定义了算法的骨架
 * @author likexin
 *
 */
public abstract class Person {
	/**
	 * 实现了模板方法,定义了整个执行流程的骨架
	 */
	public final void exam(){
		System.out.println( getName() + " sign up");
		System.out.println(getSubjects() + " the exam begins ...");
		System.out.println( getName() + " the exam is over !!!!");
	}
	/**
	 * 以下的方法是根据子类的自身的特性而完成的相应的执行步骤
	 * @return
	 */
	protected abstract String getSubjects();
	protected abstract String getName();
	
}


2.定义两个实现类

package testTemplateMode;

public class XiaoHong extends Person {

	@Override
	protected String getSubjects() {
		return "Security officer";
	}

	@Override
	protected String getName() {
		return "XiaoHong";
	}

}

package testTemplateMode;

public class XiaoMing extends Person {

	@Override
	protected String getSubjects() {
		return "Certified Public Accountant";
	}

	@Override
	protected String getName() {
		return "XiaoMing";
	}

}


3.测试类
package testTemplateMode;

public class Test {

	public static void main(String[] args) {
		Person person = new XiaoMing();
		person.exam();
		person = new XiaoHong();
		person.exam();
	}

}
模式模式优缺点:

1.优点:

不变的方法写在抽象类里面,子类里没有重复代码,减少了代码的重复。
子类实现算法的细节,有利于算法的扩展。
父类的模板方法来控制子类中的具体实现。这样你在实现子类的时
候,根本不需要对业务流程有太多的了解
 
2.缺点:


每个不同的实现都需要定义一个子类,这会导致类的个数的增加。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值