設計模式----模板方法模式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

相關文章
相關標籤/搜索