目录
前言:AQS中的设计模式
无意间在学习AQS的时候,看到了模板方法模式,原来在AQS实现的框架了融入了模板方法模式,
我们可以从一个别人写的小demo先对模板方法模式有一个宏观的认识,方便之后的理解:
一、模板方法模式的DEMO:
1、模板抽象类:HouseTemplate
public abstract class HouseTemplate {
protected HouseTemplate(String name){
this.name = name;
}
protected String name;
protected abstract void buildDoor();
protected abstract void buildWindow();
protected abstract void buildWall();
protected abstract void buildBase();
//公共逻辑
public final void buildHouse(){
buildBase();
buildWall();
buildDoor();
buildWindow();
}
}
2、子类1:HouseOne
public class HouseOne extends HouseTemplate {
HouseOne(String name){
super(name);
}
@Override
protected void buildDoor() {
System.out.println(name +"的门要采用防盗门");
}
@Override
protected void buildWindow() {
System.out.println(name + "的窗户要面向北方");
}
@Override
protected void buildWall() {
System.out.println(name + "的墙使用大理石建造");
}
@Override
protected void buildBase() {
System.out.println(name + "的地基使用钢铁地基");
}
}
3、子类2:HouseTwo
public class HouseTwo extends HouseTemplate {
HouseTwo(String name){
super(name);
}
@Override
protected void buildDoor() {
System.out.println(name + "的门采用木门");
}
@Override
protected void buildWindow() {
System.out.println(name + "的窗户要向南");
}

本文探讨了AQS框架如何运用模板方法模式,通过实例解读acquire方法的执行流程,展示了如何在AQS中让子类重写关键方法以定制同步行为。
最低0.47元/天 解锁文章
488





