设计模式之模板方法模式操作public

定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类不改变一个算法的结构即可重定义该算法的特定步骤。模板方法是一种类行为型模式

二、描述#

模板方法模式结构比较简单,其核心是抽象类和其中的模板方法的设计,包含以下两个角色:

1、AbstractClass(抽象类):在抽象类中定义了一系列基本操作(PrimitiveOperations),这些基本操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在其子类中可以重新定义或实现这些步骤。同时,在抽象类中实现了一个模板方法(TemplateMethod),用于定义一个算法的框架。

三、例子#

X公司欲为某银行的业务支撑系统开发一个利息计算模块,利息计算流程如下:

(1)系统根据账号和密码验证用户信息,如果用户信息错误,系统显示错误提示。

(2)如果用户信息正确,则根据用户类型的不同使用不同的利息计算公式计算利息(例如活期账户和定期账户具有不同的利息计算公式)

(3)系统显示利息。

Account:抽象类

publicabstractclassAccount

{

//基本方法-具体方法

publicboolValidate(stringaccount,stringpassword)

Console.WriteLine("账号:{0}",account);

Console.WriteLine("密码:{0}",password);

if(account.Equals("张无忌")&&password.Equals("123456"))

returntrue;

}

else

returnfalse;

//基本方法-抽象方法

publicabstractvoidCalculateInterest;

publicvoidDisplay

Console.WriteLine("显示利息");

//基本方法-钩子方法

publicvirtualboolIsAllowDisplay

//模板方法

publicvoidHandle(stringaccount,stringpassword)

if(!Validate(account,password))

Console.WriteLine("账户或密码错误,请重新输入!");

return;

CalculateInterest;

if(IsAllowDisplay)

Display;

CurrentAccount、SavingAccount:活期存款、定期存款,充当具体子类

publicclassCurrentAccount:Account

//重写父类的抽象基本方法

publicoverridevoidCalculateInterest

Console.WriteLine("按活期利率计算利息!");

//重写父类的钩子方法

publicoverrideboolIsAllowDisplay

returnbase.IsAllowDisplay;

publicclassSavingAccount:Account

Console.WriteLine("按定期利率计算利息!");

Program:测试代码

Accountaccount=newCurrentAccount;

if(account!=null)

account.Handle("张无忌","123456");

Console.ReadLine;

四、总结#1、优点

(1)在父类中形式化地定义一个算法,而由它的子类来实现细节的处理,在子类实现详细的处理算法时并不会改变算法中步骤的执行次序。

(2)模板方法模式是一种代码复用技术,在类库设计中尤为重要,它提取了类库中的公共行为,将公共行为放在父类中,而通过其子类来实现不同的行为,它鼓励用户恰当地使用继承来实现代码复用。

(3)模板方法模式可实现一种反向控制结构,通过子类覆盖父类的钩子方法来决定某一特定步骤是否需要执行。

(4)在模板方法模式中可以通过子类来覆盖父类的基本方法,不同的子类可以提供基本方法的不同实现,更换和增加新的子类很方便,符合单一职责原则和开闭原则。

2、缺点

(1)模板方法模式需要为每一个基本方法的不同实现提供一个子类,如果父类中可变的基本方法太多,将会导致类的个数增加,系统会更加庞大,设计也会更加抽象,此时,可结合桥接模式来进行设计。

THE END
1.浅析设计模式4——模板方法模式浅析设计模式4——模板方法模式 模板方法模式是一种行为型设计模式,通过在抽象类中定义算法骨架,将不变部分与可变部分分离,允许子类在不改变算法结构的情况下重定义特定步骤。文章介绍了模板方法模式的基本概念、结构、使用步骤,并通过网购流程的例子展示了其实现方式,强调了其在代码可维护性和扩展性方面的作用。https://blog.csdn.net/Taobaojishu/article/details/128842764
2.Java二十三种设计模式模板方法模式(14/23)(3)行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 第一部分:模板方法模式概述 1.1 定义与用途 模板方法模式的基本定义 模板方法模式是一种行为型设计模式,它在超类(通常是抽象类)中定义了一个算法的框架或https://cloud.tencent.com/developer/article/2478374
3.一文搞懂设计模式—模板方法模式一文搞懂设计模式—模板方法模式 模板方法是一种简单但非常实用的设计模式,它通过定义一个算法的框架,并将具体实现延迟到子类中,实现了代码复用和扩展的目的。在具体实现步骤相对固定、但又存在差异性的情况下,模板方法模式能够很好地解决代码重复和维护难度的问题。https://www.51cto.com/article/781665.html
4.浅析设计模式4——模板方法模式Онлайн浅析设计模式 4——模板方法模式 出处:mp.weixin.qq.com 摘要 我们在进行软件开发时要想实现可维护、可扩展,就需要尽量复用代码,并且降低代码的耦合度。设计模式就是一种可以提高代码可复用性、可维护性、可扩展性以及可读性的解决方案。大家熟知的23种设计模式,可以分为创建型模式、结构型模式和行为型模式三大https://tool.lu/ru_RU/article/51d/detail
5.模板方法模式(TemplateMethodPattern):定义算法骨架,子类实现模板方法模式(Template Method Pattern)是一种行为型设计模式,在软件开发中扮演着重要角色。其核心思想在于定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中实现,从而使得子类可以在不改变算法结构的情况下重定义该算法的某些特定步骤。以下是对模板方法模式的详细解释,包括其结构、优缺点以及一个具体实例的讲解https://www.55kaifa.com/ruanjiankaifacihuishuyu/2038.html
6..NET设计模式之模板方法模式(TemplateMethodPattern)详解模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),是一种行为设计模式,它定义了一个操作中的算法框架,将某些步骤的具体实现留给子类,这篇文章主要介绍了.NET 设计模式—模板方法模式(Template Method Pattern),需要的朋友可以参考下https://www.jb51.net/aspnet/3195765pe.htm
7.设计模式——浅谈模板方法模式与建造者模式的异同说到模板方法模式,它可能是一个让我们深入骨髓而又不自知的模式了,因为它在我们开发过程中会经常遇到,并且也非常简单。只不过,很多时候我们并不知道它就是模板方法模式而已。不负责任的说,当我们用到override关键字重写父类方法的时候,十有***就跟模板方法模式有关了。 https://blog.nowcoder.net/n/9d6e99f61b444cdf8a7bc4335ab4aac1
8.设计模式模板方法模式设计模式-模板方法模式 前言 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。 例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行https://www.jianshu.com/p/72e7d364e487
9.设计模式模板方法模式官方解释:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 设计模式大咖闫宏解释:模板方法模式是类的行为型模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同https://www.pianshen.com/article/80931864314/