首页 > 其他 > 详细

(设计模式)模板方法

时间:2021-05-31 00:09:06      阅读:17      评论:0      收藏:0      [点我收藏+]

模板方法:定义好一个执行模板(骨架),然后将一些动态的流程和数值参数化,这样就可以根据不同的参数产生不同的结果。

例如:JDK 的 AQS(AbstractQueueSynchronizer) 就是采用了模板方法模式。AQS 已经定义好线程同步的流程和细节,只有五个方法是没有实现的,由子类负责具体实现,这 5 各方式如下:

技术分享图片

这 5 个方法的作用就是约束线程应该以什么样的方式来获取和释放 “资源”。多线程运行时,必定面临资源不够的情况,此时 AQS 的 四个方法(try 开头)就是用于以独占还是共享的方式来获取资源。因为 AQS 不负责实现这四个方法,我就以 AQS 的一个子类 CountDownLatch 为例,如下:

技术分享图片

CountDownLatch 继承 AQS,并实现 tryAcquireShared 和 tryRealseShared 两个方法,定义了资源该如何获取,最后 AQS 就会根据 CountDownLatch 的这两个方法从而决定后面的执行流程。如下 AQS 的 doAcquireShared 方法:

技术分享图片

模式分析:

1、将不变与变化的分离,并将不变的模板化,变化的参数化,形成一个模板,极大地提高模板利用率的同时,还能够结合具体的参数产生不同的结果。

(设计模式)模板方法

原文:https://www.cnblogs.com/esdeathmaster/p/14829162.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!