模板方法模式 墨蓝 2021-10-18 11:34 364阅读 0赞 最近看书又遇到模板方法模式,具体是在同步器(AQS)的内容上。就顺便再来回顾下。 同步器AbstractQueuedSynchronizer(AQS)是一个抽象类。其中定义了 基本方法 和 模板方法。 \-- 基本方法都是抽象方法,需要在子类中去具体实现。 \-- 模板方法已经有具体的实现,模板方法中会对基本方法进行顺序调用。 综上,模板方法模式:在类中的模板方法方法中,对类中的其他基本方法进行定义好的规则、顺序进行调用执行。 光看文字有些绕,还是看代码会清晰一些。 public abstract class Parent { //基本方法 public abstract void get(); public abstract void set(); //模板方法,已经定义了基本方法的调用顺序规则 public void excute() { get(); set(); } } public class Child1 extends Parent{ @Override public void get() { System.out.println("get-child1"); } @Override public void set() { System.out.println("set-child1"); } } public class Child2 extends Parent{ @Override public void get() { System.out.println("get-child2"); } @Override public void set() { System.out.println("set-child2"); } } ===================================== 理论概括一下:【复制来源:参考文章】 作者:我是皮皮甜大王 链接:https://www.jianshu.com/p/f8e48d0944c8 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。 (一)什么是模板方法模式 一个操作中的算法框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构就可以定义该算法的某些特定步骤。有些抽象,等下举个例子会更明白。 (二)模板方法模式的使用:抽象类抽象子类共性+子类继承重写抽象方法 (三)模板方法模式的优点 1)提取公共代码可以使核心代码变少,放在一起方便维护,想修改某个方法只需要修改一处就可以了 2)行为由父类控制,子类实现 自己的理解父类定义你有哪些行为,子类具体实现,其具体实现不关父类的事。就像小时候老妈喊你写完家庭作业,但是你具体怎么做并不会管,你是先写语文呢,还是先写数学呢 3)封装不变部分,扩展可变部分 (四)使用场景 1)多个子类有共有方法,并且逻辑基本相同时 2)重构时,把相同的代码抽取到父类中,通过钩子函数约(钩子函数自我理解就是一个返回值为boolean的方法,通过返回值来控制其他行为,在抽象类中可以有默认实现)约束其行为 ===================================================== 转载于:https://www.cnblogs.com/dxxdsw/p/11242237.html
相关 模板方法模式 在微软的WebCast上,李建中老师有个设计模式的系列讲座,其中在讲到模板方法(Template Method)曾说:如果你只想学习一种设计模式就学习模板方法吧。由此可见它使用 我不是女神ヾ/ 2022年09月19日 00:17/ 0 赞/ 38 阅读
相关 模板方法模式 模板方法模式会将模板方法以及不需要随业务场景变化的基本方法放到父类中实现,随业务场景变化的基本方法会被定义为抽象方法,由子类提供真正的实现。 下图展示了模板方法模式的核心类, 野性酷女/ 2022年09月10日 11:24/ 0 赞/ 44 阅读
相关 模板方法模式 模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法的结构的情况下,重新定义算法中的某些步骤。 模板方法模式类图: ![ 小鱼儿/ 2022年06月03日 02:41/ 0 赞/ 68 阅读
相关 模板方法模式 一、描述 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的 素颜马尾好姑娘i/ 2022年06月03日 01:08/ 0 赞/ 51 阅读
相关 模板方法模式 引入一个例子 ![在这里插入图片描述][70] 比如冲咖啡和冲茶两个过程,加工方法似乎都差不多。可以看成如下过程: 把水煮沸boil()->冲泡brew()->倒 约定不等于承诺〃/ 2022年05月06日 10:38/ 0 赞/ 106 阅读
相关 模板方法模式 最近看书又遇到模板方法模式,具体是在同步器(AQS)的内容上。就顺便再来回顾下。 同步器AbstractQueuedSynchronizer(AQS)是一个抽象类。其中定义了 墨蓝/ 2021年10月18日 11:34/ 0 赞/ 365 阅读
相关 模板方法模式 生活中有很多按步骤才能完成的事,比如我们想进房间,需要先将门打来,然后才能进去,进去之后再把门关上。开门和关门是固定的步骤,而进入房间的步骤则不是固定的,它可以有多种方式,走着 约定不等于承诺〃/ 2021年10月15日 06:45/ 0 赞/ 398 阅读
相关 模板方法模式 什么叫做模板方法模式? 在定义功能时,功能的一部分是确定的但是有一部分是不确定的,而确定的部分在使用不确定的部分。那么这时就将不确定的部分暴露出来,由该类的子类去实现。 清疚/ 2021年09月18日 15:40/ 0 赞/ 427 阅读
相关 模板方法模式 一 点睛 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些 深藏阁楼爱情的钟/ 2021年07月24日 20:53/ 0 赞/ 479 阅读
相关 模板方法模式 在定义功能时,功能的一部分是确定的,一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类去完成。 抽象类(AbstractCl... 系统管理员/ 2021年05月03日 16:24/ 0 赞/ 460 阅读
还没有评论,来说两句吧...