Java23种设计模式——13.行为型模式之模板方法模式

Java中除去有设计原则之外,还有23中设计模式。

这些模式都是前辈们一点一点积累下来,一直在改进,一直在优化的,而这些设计模式可以解决一些特定的问题。

并且在这些模式中,可以说是将语言的使用体现的淋漓尽致。

那我们今天要学习  行为型模式  中的  模板方法模式  !

模板方法模式

先百度百科看一下什么叫模板方法模式

Java23种设计模式——13.行为型模式之模板方法模式

我们可以通过百科中给的信息了解一些东西,那就是模板模式是定义了一个算法步骤,然后子类可以为其中一个或者多个步骤提供实现,这样子类可以不改变架构算法的同时,从新定义了一些算法。

好比说我们去医院,得先挂号,然后去找看病,缴纳费用,最后看病,最后走人,这里呢,挂号、缴纳费用、走人都是必须的,这我们可以定义在父类中直接实现,但是具体我们看什么病,怎么去看病都是不一定的,有的人可能肚子疼,有的人可能是感冒了,所以需要具体的子类进行实现

模式的定义与特点

模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。

该模式的主要优点如下:

1. 它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。

2. 它在父类中提取了公共的部分代码,便于代码复用。

3. 部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。


该模式的主要缺点如下:

1. 对每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大,设计也更加抽象。

2. 父类中的抽象方法由子类实现,子类执行的结果会影响父类的结果,这导致一种反向的控制结构,它提高了代码阅读的难度。

模式的结构与实现

模板方法模式主要包含以下几个角色:

1. 抽象角色:负责给出一个算法的轮廓和骨架。

2. 具体的实现类:实现抽象类中所定义的抽象方法和钩子方法,它们是一个*逻辑的一个组成步骤。

 

然后我们来使用一下,我们就用上面去医院看病的例子来做一个程序

第一步:

第一步,我们先定义好抽象角色,这里我们需要定义五个方法和一个模板方法

Java23种设计模式——13.行为型模式之模板方法模式

然后我们把需要实现的在父类中进行实现

Java23种设计模式——13.行为型模式之模板方法模式

第二步:

我们开始写实现这个父类的子类,这个子类是主要实现诊断病情和治疗,我们来看一下

Java23种设计模式——13.行为型模式之模板方法模式

测试:

最后一步,我们弄一个测试类

Java23种设计模式——13.行为型模式之模板方法模式

然后我们运行一下

Java23种设计模式——13.行为型模式之模板方法模式

可以看到,我们这个是可以实现的,不过医院不止有眼科,还有其他的科,比如说骨科,之后的话,我们只需要实现 Model 类,然后去实现里面的两个方法即可,这样就省的我们复制粘贴代码了

 

OK,就到这里,大家好好看一下。多多练习。有问题可以联系我QQ:2100363119

欢迎大家访问我的个人网站:lemon1234.com 感谢大家留言