详解模板模式

news/2024/12/29 16:29:02/

目录

1.概述

2.实际业务场景示例

2.1.需求和实现思路

2.1.完整代码实现


1.概述

模板模式是一种常用的设计模式,它定义了一个操作中的算法的骨架,将某些步骤延迟到子类中实现。模板模式使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤。

模板模式中有两个角色:

  • 抽象类(Abstract Class):定义模板方法,描述算法的骨架,包含了一系列的步骤,并且有一些步骤是抽象方法,需要由子类实现。

  • 实现类(Concrete Class):抽象类的具体实现,实现了抽象方法,完成了算法中的具体步骤。

下面是模板模式的典型实现步骤。

抽象类:

public abstract class AbstractClass {public final void templateMethod() {// 执行算法的骨架step1();step2();step3();}public abstract void step1();public abstract void step2();public abstract void step3();// 具体方法public void concreteMethod() {// 具体方法的实现}
}

实现类:

public class ConcreteClass extends AbstractClass {@Overridepublic void step1() {// 实现步骤1}@Overridepublic void step2() {// 实现步骤2}@Overridepublic void step3() {// 实现步骤3}
}

使用:

public class Client {public static void main(String[] args) {AbstractClass template = new ConcreteClass();template.templateMethod();}
}

2.实际业务场景示例

2.1.需求和实现思路

博主以前做过一个场景,以问卷的方式对一个小区的物业服务进行评价,产品上提供的默认实现是将问卷发给业主来进行评价,但产品推广到某个市的时候,该市有定制化需求,问卷不发给业主而是发给上级管理部门,由上级管理部门去巡视,整理两边的流程如下:

产品上的实现:

  • 解析保存问卷

  • 将问卷分发给业主

  • 保存任务

项目上的定制化需求:

  • 解析保存问卷

  • 将问卷分发到管理部门的角色上

  • 保存任务

这时候就可以用到模板模式。

抽象类:

public abstract class TaskServiceBase {//创建任务public void createTask(){savePaper();allocationPaper();savePaper();}//保存问卷private void savePaper(){//业务逻辑}//分发问卷的逻辑public abstract void allocationPaper();//保存任务private void saveTask(){//业务逻辑}
}

针对客户的定制化实现:

public class ProjectTastService extends TaskServiceBase{public void allocationPaper() {//分发给住户}
}

产品的通用实现:

public class ProductTaskService extends TaskServiceBase{public void allocationPaper() {//分发给管理部门}
}

2.1.完整代码实现

产品给出的默认实现,使用@Configuration+@Bean的方式进行注入,配合使用@ConditionalOnMissBean来判断是否已经有实现已经注入Spring的IOC,有的话就不注入产品的默认实现:

 项目代码中引入产品的依赖:

没有注入自定义的实现时,调用的会是产品上的默认实现:

编写针对客户的定制化实现,用@Service注解将实现注入Spring 的IOC中

生效的会是给客户定制的实现:

 


http://www.ppmy.cn/news/362096.html

相关文章

OPhone开发环境搭建

(1)首先下载Eclipse3.4.2,安装。 (2)下载OPhone SDK,解压后在tools/ophone目录下有adt插件 (3)安装adt。在Eclipse中的Help-->software updates-->available software——》local选项中…

j2me程序如何移植到ophone

文章转自东方尚智3g数字内容学院沈大海老师博客: 中国拥有世界最庞大的电信客户群,仅移动用户就达7亿,3G在中国有最大的市场做后盾,无论现在的市场发展如何的困难,3G费用的降低是大势所趋,不久的将来&#…

移动专栏:Ophone选题讨论,欢迎大家提意见

大家好,移动是当前一个较为热点的话题,很多开发者都非常关注。为此,我们邀请了相关资深技术专家,为《程序员》撰写系列文章。 下面是初步拟定的议题点,欢迎大家在此基础上,发表建议和意见:您希望…

安装OPHONE开发环境

非常感谢网上的热心人,正是因为你们的付出,才给我这样的新手提供了很多教材。 1、安装WMware workstation。 2、安装ophone的SDK等。配置系统变量。 3、安装Eclipse。 上述安装方法在网上都可以找到,因此我自己也不详细总结了。

Ophone的开发的配置和安装

http://ophone8.com/thread-2668-1-1.html

OPhone开发环境设置备忘录

1 安装eclipse 3.4.x http://www.eclipse.org/downloads/ 2 安装sun java sdk 1.6, 并设置bin系统路径 3 打开eclipse, help->install new software..., 输入https://dl-ssl.google.com/android/eclipse/ 并安装该android开发插件 4 从移动mmarket下载OPhone sdk, 并安装…

ophone将死?

http://meetspec.com/portal.php?modview&aid1876 偶然间看到一个小道消息,没有想到,自己非常熟悉的一个平台,最后走向的可能是这样的一种命运,项目执行力,平台所有的东西在政策的和管理层的变动下,变…

中国移动将发力Android及OPhone平台游

C114讯 10月20日上午消息(李明)在今天上午举行的“2010年中国Android游戏发展高峰论坛”上,游戏基地主任助理端木文琳表示,中国移动泛游戏产品体系主要致力于开发PC游戏、家庭游戏等。在平台层,此前中国移动游戏产品主…