设计模式----模板方法模式UML和实现代码

1、什么是模板方法模式?

模板方法模式(Template Method) 定义一个操做中算法的骨架,而将一些步骤延迟到子类中。模板方法能够不改变一个算法的结构便可从新定义该算法的某些特定步骤。
java

类型形为型模式 git

顺口溜:中访策备迭 观命状职解github

2、模板模式UML

3、JAVA代码实现

package com.amosli.dp.behavior.template;

public abstract class AbstractClass {
	public  void templateMethod(){
		primitiveMethod1();
		primitiveMethod2();
	}
	public abstract void  primitiveMethod1();
	public abstract void  primitiveMethod2();

}

package com.amosli.dp.behavior.template;

public class ConcreteClassA extends AbstractClass{

	@Override
	public void primitiveMethod1() {
		System.out.println("ConcreteClassA primitive method 1...");
	}

	@Override
	public void primitiveMethod2() {
		System.out.println("ConcreteClassA primitive method 2...");
	}

}

package com.amosli.dp.behavior.template;

public class ConcreteClassB extends AbstractClass{

	@Override
	public void primitiveMethod1() {
		System.out.println("ConcreteClassB primitive method 1...");
	}

	@Override
	public void primitiveMethod2() {
		System.out.println("ConcreteClassB primitive method 2...");
	}

}


package com.amosli.dp.behavior.template;

public class Client {
	public static void main(String[] args) {
		AbstractClass abstractClass = new ConcreteClassA();
		abstractClass.templateMethod();

		abstractClass = new ConcreteClassB();
		abstractClass.templateMethod();
	}
}

4、使用场景

当不变和可变的行为在方法的子类中混合在一块儿时,不变的行为就会在子类中重复出现。咱们能够经过模板方法模式将这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠结。算法

5、优缺点

一、优势

模板方法所不变的行为搬到超类,去除子类中的重复代码,提供了一个很好了代码复用平台;ide


二、缺点

将不变行为集成到超类中,当类的行为比较复杂时,对于超类的管理和扩展将会愈来愈复杂,因此使用模板方法模式时,切记对于不对的类分配不一样的职责(SRP)。
spa


6、源码地址

本系列文章源码地址,https://github.com/amosli/dp  欢迎Fork  & Star !!code

相关文章
相关标签/搜索