`

java实现模板模式的方法

    博客分类:
  • java
 
阅读更多
1. 传统的模板模式,就是基类为抽象类,然后将各种具有特性的行为,留给特定的子类去完成。
    这种模式,只能在子类里面调用一次。但是有些情况,可能需要在子类里面多次调用模板方  法,这种情况下就需要用到第二种方法。

2. 回调。需要写一个回调接口,然后将要实现的具体方法,通过参数的模式,传入进具体的方法
比如:

public String getQueryResultTemplate(String startTime, String endTime,
			String checkType, Map<String, Object> byType,
			QueryTotalResultCallback callbackTotal,
			QueryResultCallback callbackp,
			QueryResultCallback callbackA) {
		List<String> pList = (List<String>) byType
				.get(CommonFixed.p_LIST);
		List<String> AList = (List<String>) byType
				.get(CommonFixed.A_LIST);
		List<String> calTypeList = (List<String>) byType
				.get(CommonFixed.CAL_TYPE_LIST);

		Map<String, Integer> totalMap = new HashMap<String, Integer>();
		Map<String, Map<String, Integer>> pMap = new HashMap<String, Map<String, Integer>>();
		Map<String, Map<String, Integer>> AMap = new HashMap<String, Map<String, Integer>>();

		// calculate the total
		if (calTypeList.contains(CommonFixed.CAL_TOTAL)) {
			totalMap = callbackTotal.callTheTotalDao();
		}

		// calculate the p
		if (calTypeList.contains(CommonFixed.CAL_p)) {
			pMap = callbackp.callTheDao();
		}

		// calculate the A
		if (calTypeList.contains(CommonFixed.CAL_A)) {
			AMap = callbackA.callTheDao();
		}

		// parse the result to the expected json string
		return CommonUtils.parseResultToJson(startTime, endTime, totalMap,
				pMap, AMap, pList, AList);
	}


具体调用的方法:
public String getMMNumber(final String startTime,
			final String endTime, final String checkType,
			final Map<String, Object> byType) {
		final List<String> pList = (List<String>) byType
				.get(CommonFixed.p_LIST);
		final List<String> aList = (List<String>) byType
				.get(CommonFixed.a_LIST);

		return getQueryResultTemplate(startTime, endTime, checkType, byType,
				new QueryTotalResultCallback() {
					public Map<String, Integer> callTheTotalDao() {
						// calculate the total
						return buildCheckDao.calToalCodeLine(startTime,
								endTime, checkType, pList, aList);
					}
				}, new QueryResultCallback() {
					public Map<String, Map<String, Integer>> callTheDao() {
						// calculate the p
						return buildCheckDao.calpCodeLine(startTime,
								endTime, checkType, pList);
					}
				}, new QueryResultCallback() {
					public Map<String, Map<String, Integer>> callTheDao() {
						// calculate the a
						return buildCheckDao.calaCodeLine(startTime,
								endTime, checkType, aList);
					}
				});
	}
分享到:
评论

相关推荐

    java设计模式-模板模式

    1. **抽象类(Abstract Class)**:这是模板模式的核心,它定义了模板方法以及一些具体方法。模板方法是一个具体方法,通常为final类型,以防止被子类重写。它定义了算法的主要结构,而将一些步骤留给了子类来实现。...

    设计模式--模板方法模式java例子

    例如,我们有一个`TestTemplatePattern`文件,这可能是一个具体的实现模板方法模式的Java类。在这个类中,可能会包含以下关键元素: 1. **抽象类(Abstract Class)**: 定义了模板方法和一些基本操作。模板方法通常...

    模板方法模式代码示例

    在模板方法模式中,通常有一个抽象基类,它包含了主要的算法流程,这个流程被划分为几个基本操作,这些操作由具体实现类(即抽象基类的子类)来完成。抽象基类通过声明这些操作为抽象方法或者钩子(hook)方法来强制...

    java设计模式之模板模式

    在Java设计模式之模板模式中,我们将深入探讨这种模式的原理、应用场景以及如何在实际编码中实现。 模板模式的核心在于抽象类,这个抽象类定义了一个操作中的算法骨架,而将一些具体步骤的实现延迟到其子类中。这样...

    设计模式之模板方法模式

    - 在抽象类中实现模板方法,调用抽象方法和钩子方法。 - 子类继承抽象类,实现抽象方法和可选的钩子方法。 - 在子类中可以通过覆盖钩子方法来改变算法的行为。 总的来说,模板方法模式提供了一种代码复用的有效手段...

    7.java模板模式与8.策略模式示例

    在Java中,模板模式通常通过抽象类来实现,抽象类定义了操作的主要步骤,而具体的实现由其子类完成。 **主要步骤**: 1. **定义抽象模板类**:包含一个或多个抽象方法,这些方法在模板方法中被调用。 2. **具体实现...

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

    在Java中,模板模式通常使用抽象类来定义模板方法,这个方法由一系列基本操作组成,这些操作在模板类中可能是抽象的或已经实现了的。子类通过重写这些抽象方法,为算法的具体步骤提供实现。这种设计模式遵循“开闭...

    设计模式之模板方法模式Java实现和类设计图

    在Java中,模板方法模式通常通过抽象类来实现。抽象类定义了基本操作,这些操作由具体子类实现。模板方法通常是一个抽象方法,它调用这些基本操作,形成一个完整的算法流程。这种方式有助于减少代码重复,保持代码的...

    Java中的模板方法模式:设计灵活且可复用的算法框架

    本文将详细介绍如何在Java中实现模板方法模式,包括其概念、结构、优点、缺点以及实际应用示例。 模板方法模式是一种强大的设计模式,它通过定义算法的骨架和允许子类扩展特定步骤,提供了算法的灵活性和可复用性。...

    Java设计模式之模板方法模式Java认证考试.pdf

    Java设计模式之模板方法模式Java认证考试 Java设计模式之模板方法模式是Java认证考试中的一种重要的设计模式,它通过使用继承关系来定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个...

    java实现poi模板生成PPT文件代码

    总结来说,使用Java和Apache POI生成PPT文件涉及理解PPT文件结构、掌握POI API、创建模板、数据绑定和错误处理等多个步骤。在给定的代码中,可能有两个不同的迭代实现,分别对应两种不同的处理方式或优化策略。通过...

    java模板模式

    Java模板模式是一种设计模式,属于行为模式类别,它在软件工程中扮演着重要的角色,尤其在构建可扩展和可复用的代码时。模板模式通过定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个...

    java实现模板方法模式-具体模板类(Concrete Template Class)

    具体的子类继承抽象模板类,并实现其中的抽象方法,完成自己的特定操作步骤。模板方法模式能够提供代码的复用性和扩展性,将通用的操作步骤封装在抽象模板类中,而具体的实现可以由子类灵活扩展和改变。

    Java设计模式之模板方法模式.rar

    在Java中,模板方法模式通常通过抽象类来实现,这个抽象类包含了主要的操作流程,也就是模板方法。模板方法一般声明为final,防止子类覆盖其具体实现。同时,抽象类中定义了一些抽象方法或者钩子方法(hook method)...

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

    模板方法模式是一种行为设计模式,它允许在定义行为框架的同时,延迟部分具体步骤到子类中实现。这种模式主要用于在父类中定义算法的骨架,而将一些步骤的实现细节留给子类去完成,从而使得不同的子类可以重用相同的...

    模板方法模式简介和java代码实现

    这个模式的关键在于抽象类中定义了一个模板方法,该方法由一系列基本操作(抽象方法和具体方法)组成,其中抽象方法由子类实现,具体方法在抽象类中已经实现或者可以由子类覆盖。 **模板方法模式的特点:** 1. **...

    java实现模板方法模式-抽象模板类(Abstract Template Class)

    定义模板方法和一些基本的操作步骤,其中模板方法通过调用其他具体方法组合完成操作。

    java版本的设计模式的实现demo

    在Java中,可以通过私有构造函数、静态私有变量和公共静态方法来实现单例模式。 3. 工厂模式 工厂模式是另一种常用的创建型模式,它将对象的创建与使用进行了解耦。根据不同的情况,可以实现简单工厂模式、工厂方法...

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

    在给定的PPT内容中提到了一个简化的Java代码示例,用于展示模板方法模式的实现。代码如下所示: ```java public abstract class Beverage { final void prepareBeverage() { boilWater(); brew(); pourInCup();...

    java设计模式之策略模式与模板模式

    而游戏的战斗流程则可以用模板模式来定义,每个战斗阶段(如攻击、防御)的具体行为由子类实现。 此外,这两种模式也可以和其他模式一起使用,如工厂模式可以用于创建策略对象,装饰器模式可以用来动态地增加或修改...

Global site tag (gtag.js) - Google Analytics