模板方法模式----设计模式系列

简介:

模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤。

         定义有些呆板,说说我的理解吧。父类定义实施的步骤,子类中实现具体的算法。当我们要完成在某一细节层次一直得一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,通常考虑用模板方法木事来处理。

代码很简单的不要不要的,还有注释。直接贴啦。

(1)定义抽象模板父类

/**
 * 抽象模板,定义并实现了一个模板方法。这个模板方法一般是个<b><u><font color="blue">具体方法</font></u></b>。<br/>
 * 它给出了一个顶级逻辑的骨架。<br/>
 * 而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。<br/>
 * 顶级逻辑也有可能调用一些具体方法。
 * @author 董永康
 *
 */
public abstract class AbstractClass {

	public abstract void add();

	public abstract void sub();

	public void TemplateMethod() {
		add();
		sub();
		System.out.println(this.getClass().getName());
	}
}

(2)具体实现子类

/**
 * 具体实现类,在这里实现父类定义的一个或者多个抽象方法
 * @author 董永康
 *
 */
public class ConcreteClassA extends AbstractClass {

	@Override
	public void add() {
		System.out.println("ConcreteClassA-->add()");
	}

	@Override
	public void sub() {
		System.out.println("ConcreteClassA-->sub()");
	}

}

/**
 * 具体实现类,在这里实现父类定义的一个或者多个抽象方法
 * 
 * @author 董永康
 *
 */
public class ConcreteClassB extends AbstractClass {

	@Override
	public void add() {
		System.out.println("ConcreteClassB-->add()");
	}

	@Override
	public void sub() {
		System.out.println("ConcreteClassB-->sub()");
	}

}

(3)测试类

public class Template {
	
	public static void main(String[] args) {
		AbstractClass  mAbstractClass = new ConcreteClassA();
		mAbstractClass.TemplateMethod();
		
		mAbstractClass = new ConcreteClassB();
		mAbstractClass.TemplateMethod();
	}
}
(4)输出

ConcreteClassA-->add()
ConcreteClassA-->sub()
com.dyk.template.ConcreteClassA
ConcreteClassB-->add()
ConcreteClassB-->sub()
com.dyk.template.ConcreteClassB

总结:模板方法模式是通过把不变的行为搬移到超类,去除子类中的重复代码来体现它的优势。提供了一个很好的代码复用平台。通过模板方法模式把不可变的行为搬移到父类,帮助子类拜托重复不变行为的纠缠。



下载地址:http://download.csdn.net/detail/qq_17250009/9229893


相关文章
|
9月前
|
设计模式 算法
二十三种设计模式全面解析-深入解析模板方法模式的奇妙世界
二十三种设计模式全面解析-深入解析模板方法模式的奇妙世界
|
设计模式 存储 算法
行为型设计模式02-模板方法模式
行为型设计模式02-模板方法模式
66 0
|
设计模式 算法
设计模式9 - 模板方法模式【Template Method Pattern】
设计模式9 - 模板方法模式【Template Method Pattern】
48 0
|
设计模式 算法 Java
设计模式~模板方法模式(Template method)-10
目录 (1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例: (6)Servlet Api &
66 0
|
13天前
|
设计模式 SQL 算法
「全网最细 + 实战源码案例」设计模式——模板方法模式
模板方法模式是一种行为型设计模式,定义了算法的骨架并在父类中实现不变部分,将可变部分延迟到子类实现。通过这种方式,它避免了代码重复,提高了复用性和扩展性。具体步骤由抽象类定义,子类实现特定逻辑。适用于框架设计、工作流和相似算法结构的场景。优点包括代码复用和符合开闭原则,缺点是可能违反里氏替换原则且灵活性较低。
60 7
「全网最细 + 实战源码案例」设计模式——模板方法模式
|
5月前
|
设计模式 算法 Java
Java设计模式-模板方法模式(14)
Java设计模式-模板方法模式(14)
|
7月前
|
设计模式 JavaScript 算法
js设计模式【详解】—— 模板方法模式
js设计模式【详解】—— 模板方法模式
60 6
|
8月前
|
设计模式 算法 关系型数据库
设计模式第七讲-外观模式、适配器模式、模板方法模式详解
系统要求所有的数据库帮助类必须实现ISqlHelp接口,面向该接口编程,如SQLServerHelp类。 此时第三方提供了一个新的MySql的帮助类(假设是dll,不能修改),它的编程规范和ISqlHelp不兼容,这个时候就需要引入适配器类,使二者能相互兼容。
194 0
|
9月前
|
设计模式 算法 Java
Java 设计模式:深入模板方法模式的原理与应用
【4月更文挑战第27天】模板方法模式是一种行为设计模式,主要用于定义一个操作中的算法的框架,允许子类在不改变算法结构的情况下重定义算法的某些特定步骤。
81 1
|
9月前
|
设计模式 Go
[设计模式 Go实现] 行为型~模板方法模式
[设计模式 Go实现] 行为型~模板方法模式

热门文章

最新文章