`
yulon
  • 浏览: 117831 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

模板方法模式在项目中的应用

阅读更多


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

 

2、模板方法模式结构图:

 

     

3、在代码中的表现:

     3.1定义一个抽象模板类

/**抽象模板类**/
public abstract class AbstractClass {
	/**
	 * 定义一系列步骤的方法
	 */
	public void templateMethod(){
		commonOperation();
		operation1();
		operation2();
	}
	private void commonOperation(){
		System.out.println("共同的方法");
	}
	/**要求子类去实现的方法1**/
	protected abstract void operation1();
	/**要求子类去实现的方法2**/
	protected abstract void operation2();
}

 

   3.2定义第一个具体ConcreteClassA子类

public class ConcreteClassA extends AbstractClass {
	@Override
	protected void operation1() {
		System.out.println("子类A实现的operation1方法");
	}
	@Override
	protected void operation2() {
		System.out.println("子类A实现的operation2方法");
	}
}

   3.3定义第二个具体ConcreteClassB子类

public class ConcreteClassB extends AbstractClass {
	@Override
	protected void operation1() {
		System.out.println("子类B实现的operation1方法");
	}
	@Override
	protected void operation2() {
		System.out.println("子类B实现的operation2方法");
	}
}

 

   3.4测试类TemplateTest

  

/**
 * 测试类
 * @author pylxy
 *
 */
public class TemplateTest {
	public static void main(String[] args) {
		AbstractClass ac = new ConcreteClassA();
		ac.templateMethod();
		ac = new ConcreteClassB();
		ac.templateMethod();
	}

}

    运行结果:

  

共同的方法
子类A实现的operation1方法
子类A实现的operation2方法
共同的方法
子类B实现的operation1方法
子类B实现的operation2方法

4、 使用模板方法模式处理DAO中的查询方法

    4.1  定义一个AbstractDao类

   

/**模板类**/
public abstract class AbstractDao {
	/**查询的模板方法**/
	public Object find(String sql, Object[] args) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = getConnection();
			ps = conn.prepareStatement(sql);
			for (int i = 0; i < args.length; i++)
				ps.setObject(i + 1, args[i]);
			rs = ps.executeQuery();
			Object obj = null;
			if (rs.next()) {
				obj = rowMapper(rs);
			}
			return obj;
		} catch (SQLException e) {
			
		} finally {
			close(rs, ps, conn);
		}
	}
	//抽象方法让子类去实现
	abstract protected Object rowMapper(ResultSet rs) throws SQLException;
}

 

   4.2 定义UserDaoImpl类,同时继承AbstratDao类

 

public class UserDaoImpl extends AbstractDao {

	public User findUser(String username) {
		String sql = "select * from user where name=?";
		Object[] args = new Object[] { username };
		Object user = super.find(sql, args);//调用父类模板方法
		return (User) user;
	}
    //实现让父类去调用的抽象方法
	protected Object rowMapper(ResultSet rs) throws SQLException {
		User user = new User();
		user.setId(rs.getInt("id"));
		user.setUsername(rs.getString("username"));
		user.setPassword(rs.getFloat("password"));
		user.setBirthday(rs.getDate("birthday"));
		return user;
	}
}

  5、类及方法的对应关系

   AbstractDao类------------>AbstractClass 类

   UserDaoImpl 子类----------->ConcreteClassA子类

   abstract protected Object rowMapper方法----> abstract void operation1方法

   

  这样就实现了不同的Dao类共用一部分代码,有效地实现了代码的复用.

  

  • 大小: 39.3 KB
5
1
分享到:
评论

相关推荐

    设计模式-模板方法模式ppt

    ### 设计模式之模板方法模式解析 #### 一、引言 在软件开发过程中,我们经常面临这样的场景:有一些步骤是固定的,而...希望通过对模板方法模式的学习和应用,能够在实际项目中发挥其作用,提高软件开发的效率和质量。

    设计模式-模板方法模式(讲解及其实现代码)

    模板方法模式" 中,应该包含了关于模板方法模式的更多详细讲解、示例代码以及如何在实际项目中应用该模式的实例。通过学习这部分内容,读者可以深入理解模板方法模式的工作原理,并学会如何在自己的代码中有效利用这...

    工厂模式及模板方法模式深度思考

    结合标签“源码”和“工具”,我们可以理解这篇博客可能详细分析了这两种模式在实际项目或工具中的源码实现,探讨了如何通过工厂模式和模板方法模式优化代码结构,提高代码的复用性和可扩展性。文件名"template...

    ios-iOS模板方法模式使用心得demo.zip

    在iOS应用开发中,模板方法模式的典型应用场景可能包括视图控制器的生命周期方法、数据加载流程、动画序列等。例如,一个抽象的ViewController基类可以定义一个模板方法来处理加载视图的过程,其中包含初始化视图、...

    7模板方法模式1

    在实际应用中,模板方法模式广泛应用于各种场景,例如GUI框架中的事件处理、数据库访问的CRUD操作、测试框架的测试流程等。例如,在GUI框架中,窗口关闭的模板方法可能会包括检查窗口是否允许关闭、保存数据、释放...

    模板方法模式(jzkangta).rar

    在实际应用中,模板方法模式常用于框架设计,比如GUI库、数据库操作库等。例如,在GUI库中,框架可能定义了一个窗口打开和关闭的模板方法,而子类则负责实现打开窗口的具体逻辑(如绘制界面元素)和关闭窗口的具体...

    设计模式之模版方法模式

    在给定的压缩包文件"mobanfangfamoshi"中,可能包含了模板方法模式的实例代码,你可以通过查看这些文件更深入地理解如何在实际项目中应用模板方法模式。通过学习和实践,你可以熟练掌握这一模式,并在设计复杂系统时...

    [行为型模式] 模板方法模式的理解

    接下来,我们将深入探讨模板方法模式的概念、结构以及如何在实际开发中应用。 **模式概念** 模板方法模式的核心是定义一个操作中的算法步骤,并允许子类在不改变算法结构的情况下重定义某些特定步骤。这个模板方法...

    模板模式课件及代码-极客学院

    模板模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色。这个模式定义了算法的骨架,并允许子类在不改变结构的情况下重...极客学院的这门课程旨在帮助学员掌握模板模式的精髓,以便在实际项目中灵活应用。

    模版方法模式demo

    在实际应用中,模板方法模式广泛应用于各种场景,例如框架设计、游戏逻辑、GUI框架等。例如,在一个图形用户界面的框架中,可能有一个模板方法负责处理用户的点击事件,其中包含了一系列步骤:获取点击位置、检查...

    设计模式之简单模板模式(附demo)

    在给定的"template"压缩包文件中,可能包含了模板模式的示例代码或演示项目。通过查看这个示例,你可以更好地理解如何在实际编程中应用模板模式。例如,可能会有一个抽象类定义了处理文件的一系列基本步骤,而这些...

    模板方法模式-考试题目03.rar_C++

    在"模板方法模式-考试题目03"的压缩包中,我们可以推测这可能是一份关于C++编程的学习资料,特别关注了如何在实际项目或考试中应用模板方法模式。学习过程中,你可能会遇到以下知识点: 1. **抽象类与抽象方法**:...

    java模式--模板模式实例代码

    下面我们将详细探讨模板模式的组成部分、工作原理以及如何在实际项目中应用。 1. **组件**: - **抽象模板(Abstract Template)**: 这是定义模板方法的抽象类,包含了一个或多个抽象操作,这些操作由具体模板类来...

    模板方法Demo

    在《Android源码设计模式解析与实战 15章》中,作者可能详细解释了模板方法在Android框架中的应用,以及如何在实际项目中利用模板方法模式来优化代码结构和提高代码质量。通过对Depat等示例的分析,读者可以更好地...

    模板方法模式-考试题目02.rar_C#_Keeper

    在压缩包内的"模板方法模式-考试题目02"可能包含了一些关于如何在实际项目中应用模板方法模式的示例代码或者测试题目。这些题目可能要求开发者理解如何定义抽象类,如何定义和调用钩子方法,以及如何在子类中覆写...

    template-method-demo 模板方法示例

    在实际项目中,模板方法模式常用于框架设计,例如在处理数据库操作、文件系统交互、图形用户界面事件处理等方面,提供一种统一的执行流程,而让具体的实现细节由各个组件去完成。通过"template-method-demo"这个示例...

    C++设计模式课件3_Template Method_模板方法.pdf

    ### C++设计模式课件3_Template Method_模板方法 #### 模板方法设计模式解析 模板方法模式(Template Method Pattern)...在实际项目中,结合具体场景灵活运用模板方法模式,将有助于构建更加健壮和灵活的软件系统。

    Java经典设计模式之模板方法模式定义与用法示例

    模板方法模式可以在项目开发中应用于解决一些具有相同操作步骤的功能模块。 优点: 模板方法模式的优点是可以提高代码的复用性和灵活性,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 缺点...

    设计模式中的模板方法模式在Ruby中的应用实例两则

    主要介绍了设计模式中的模板方法模式在Ruby中的应用实例两则,经典的项目经理例子在这里又被套上用了^^需要的朋友可以参考下

    C++设计模式代码资源3_Template Method_模板方法.zip

    在软件开发领域,设计模式是一种经过验证的、通用的解决方案,用于解决常见编程问题。"模板方法"(Template Method)是设计模式中的一个...通过查看源代码,我们可以深入理解如何在实际项目中应用和扩展这个设计模式。

Global site tag (gtag.js) - Google Analytics