继享元模式后来到了模板方法模式啦。说到模板方法模式,它可能是一个让我们深入骨髓而又不自知的模式了,因为它在我们开发过程中会经常遇到,并且也非常简单。自我认为是Java设计模式中最简单的一种啦。 会了就当复习丫,不会来一起来看看吧。 很喜欢一句话:
“八小时内谋生活,八小时外谋发展”。
如果你也喜欢,让我们一起坚持吧!!
共勉
😁
人生还有许久,请相信会有光的
说到模板方法模式,它可能是一个让我们深入骨髓而又不自知的模式了,因为它在我们开发过程中会经常遇到,并且也非常简单。只不过,很多时候我们并不知道它就是模板方法模式而已。不负责任的说,当我们用到override
关键字重写父类方法的时候,十有八九就跟模板方法模式有关了。
当然生活中也不少这种,例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。
模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。
并竟模板
吗,就是整出一个样板出来,让其他人模仿啦。
模板方法(Template Method)模式包含以下主要角色:
为防恶意操作,一般模板方法都加上final
关键字
就以我们去银行办理业务为例子。去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现
定义一个抽象类
public abstract class AbstractClass {
public final void takeNumber(){
System.out.println("取号码");
}
public final void queueUp(){
System.out.println("耐心排队");
}
/** * 办理具体业务 根据字类的需求来进行实现 */
public abstract void handleBusiness();
public final void score(){
System.out.println("给银行工作人员评分!!!");
}
}
AUser和BUser
来模拟不同的顾客
public class AUser extends AbstractClass{
@Override
public void handleBusiness() {
this.takeNumber();
this.queueUp();
System.out.println("你好,我想贷款2k,交个房租");
this.score();
}
}
public class BUser extends AbstractClass{
@Override
public void handleBusiness() {
this.takeNumber();
this.queueUp();
System.out.println("你好,我打算存2k,留着以后取媳妇!!!");
this.score();
}
}
客户端测试代码:
public class Client {
public static void main(String[] args) {
AbstractClass aUser = new AUser();
aUser.handleBusiness();
/**
* 取号码
* 耐心排队
* 你好,我想贷款2k,交个房租
* 给银行工作人员评分!!!
*/
}
}
注意:为防止恶意操作,一般模板方法都加上 final 关键词。
我也不知道文章写出来是有用还是无用,只是想做一个分享。希望大家能够喜欢并且在这里能有收获。
当然不可否认,我也想获得那种别人认可的那种快乐,并且能人我继续维之坚持。
你好啊,要天天开心哦。下篇文章再见。
此系列还在持续更新中… 我一定还会回来的。😁