模板方法(template method)模式

模板(template method)方法模式

一、概述

  生活中每个人都离不开吃,然而每个人吃的东西都不尽相同;有的人可能每天只能吃包子馒头,而有的人却可以每日山珍海味。尽管吃的东西不一样,但有些步骤却是相同:点单→吃东西→买单。

  在软件开发中,同样存在许多类似的情况。例如:查询数据时,都需要按照如下步骤执行:初始化session→使用session查询数据→处理数据→返回数据;这些步骤执行顺序都是一致的,然而处理数据的方式可能不尽相同。如果每个类都copy一份相同的代码,这不仅会造成代码的大量冗余,而且随着代码量的逐渐增加,需求的频繁变更,那么整个程序将慢慢腐坏,系统将变得难以维护。

  对于一些实现步骤基本固定,但有少量步骤实现方式不确定(一种需求对应一种实现方式)的情况,可以通过OOP的继承,将固定步骤在父类中实现,将一些不确定的步骤推迟到子类去实现,在子类中根据需求编写不同实现方式。这种解决方案被称之为模板方法模式

  模板方法模式定义:定义在一个操作中的一个算法框架(一系列操作步骤),把一些步骤推迟到子类中去实现,使子类不改变算法结构(不需关心算法结构),而是重新定义特有的算法步骤。

  一般情况下我们通过继承关系编写子类实现特有的方法步骤,然而当有大量不同需求时,这可能需要创建大量的子类,对于这种情况,可以通过回调的方式大大减少子类的数量。例如在spring中就大量运用了模板方法模式回调的方案,比如TemplateHibernate的execute(HibernateCallBack action),如下使用模板方法模式创建自己的TemplateHibernate:









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值