Java设计模式之模板模式

从名字上看模板模式与元型模式有点像,但实际上它们有很大的不同。

元型模式是创建系列中的模式,它的实现是先为类创建一个实例,然后对这个实例进行初化,并当成是元型。以后再需要这个类的实例时,不再是从头开始new,而是从已有的元型clone。当然,元型可能不只一个,这个时候就要用集合类进行管理了,在clone之前先去集合里查找匹配的元型。

模板模式是行为系列中的模式。它的实现方式是在抽象类中定义一个主方法,这个主方法定义调用其它方法的顺序、逻辑,它就是模板。其它方法则在不同的扩展类中实现。

模板模式很简单,但是项目开发中会经常遇到。

比如开发一个负荷测试工具,无论测试的目标是什么,连接服务器------>按规定的次数、时间间隔向服务器发送消息------>断开与服务器的连接这种逻辑是不会变的,这种情况下就可以使用模板模式,代码如下:
 

package com.zhangxf.template;

abstract class MyTest {
	public final void startTest(int times, int interval) {
		connect();

		for (int i = 0; i < times; i++) {
			sendMessage();
			try {
				Thread.sleep(interval);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

		disConnect();
	}

	public abstract void connect();

	public abstract void sendMessage();

	public abstract void disConnect();
}

class MyTestMail extends MyTest {

	@Override
	public void connect() {
		System.out.println("Connect to mail server");
	}

	@Override
	public void sendMessage() {
		System.out.println("Send message to mail server");
	}

	@Override
	public void disConnect() {
		System.out.println("Disconnect with mail server");
	}
}

class MyTestWeb extends MyTest {

	@Override
	public void connect() {
		System.out.println("Connect to web server");
	}

	@Override
	public void sendMessage() {
		System.out.println("Send message to web server");
	}

	@Override
	public void disConnect() {
		System.out.println("Disconnect with web server");
	}
}

public class TemplatePattern {

	public static void main(String[] args) {
		System.out.println("Test for web server");
		MyTest test = new MyTestWeb();
		test.startTest(10, 5);
		System.out.println("Test for mail server");
		test = new MyTestMail();
		test.startTest(5, 10);
	}
}

运行结果:

Connect to web server
Send message to web server
Send message to web server
Send message to web server
Send message to web server
Send message to web server
Send message to web server
Send message to web server
Send message to web server
Send message to web server
Send message to web server
Disconnect with web server
Test for mail server
Connect to mail server
Send message to mail server
Send message to mail server
Send message to mail server
Send message to mail server
Send message to mail server
Disconnect with mail server

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值