Java设计模式-模板模式

最近学习到设计模式,现总结个人学习模板模式内容。

定义:

一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。

优缺点

优点

  • 1、封装不变部分,扩展可变部分。
  • 2、提取公共代码,便于维护。
  • 3、行为由父类控制,子类实现。

缺点

每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。如果你是规则设计方的话,只需要设计步骤即可,具体实现各个厂商自己实现就好。

实现

例如这里实现数据库的相关。

定义抽象类

/**
 * 数据库连接模板
 * @author cc百川
 *
 */
public abstract class Jdbc {
	public String connect ;//假定这个就是执行器
	
	/**
	 * 第一步加载驱动
	 * @return
	 */
	public abstract void addDriver();
	/**
	 * 第二步连接数据库
	 */
	public abstract void  connectJdbc();

	/**
	 * 执行sql
	 * @param sql
	 * @return
	 */
	public final Object executer(String sql){
		this.addDriver();
		this.connectJdbc();
		System.out.println(this.connect+"正在执行sql语句,sql = "+sql);
		this.closeJdbc();
		return null;
	}
	
	/**
	 * 第四步关闭连接
	 */
	public void closeJdbc(){
		System.out.println("正在关闭"+this.connect+"连接");
	}
}

厂商实现

oracle厂商

import template.jdbc.Jdbc;

/**
 * oracle厂商
 * @author Administrator
 *
 */
public class OracleJdbc extends Jdbc {

	@Override
	public void addDriver() {
		System.out.println("加载oracle的驱动");

	}

	@Override
	public void connectJdbc() {
		System.out.println("加载oracle的连接");
		this.connect = "oracle";
	}
}

mysql厂商

import template.jdbc.Jdbc;

/**
 * mysql厂商
 * @author cc百川
 *
 */
public class MysqlJdbc extends Jdbc{

	@Override
	public void addDriver() {
		System.out.println("加载mysql的驱动");
	}

	@Override
	public void connectJdbc() {
		System.out.println("建立mysql的连接");
		this.connect = "mmysql的连接";
	}
}

等等其他厂商同理实现相关逻辑。

测试

import template.jdbc.mysql.MysqlJdbc;
import template.jdbc.oracle.OracleJdbc;
import template.jdbc.sqlserver.SqlserverJdbc;

public class TestJdbc {
	public static void main(String[] args) {
		String sql = "select * from test where id = 1";
		//racle
		Jdbc jdbc = new OracleJdbc();
		jdbc.executer(sql);
		
		//mysql
		jdbc = new MysqlJdbc();
		jdbc.executer(sql);
		
		//sqlserver
		jdbc = new SqlserverJdbc();
		jdbc.executer(sql);
	} 
}

在这里插入图片描述
模板执行方法设置为final修饰这样保证了执行步骤不被修改。


以上仅为个人学习,如果错误望指出,谢谢。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值