今天看AQS时,注意到它用到了模板方法设计模式。模板设计模式比较简单,父类定义好操作骨架,将一些方法的实现延迟到子类中,让子类实现。子类继承父类,实现必要的方法但不改变操作流程的整体结构。模板方法属于行为设计模式。
AQS提供的模板方法如下:
@Override protected boolean tryAcquire(int arg) { return super.tryAcquire(arg); } @Override protected boolean tryRelease(int arg) { return super.tryRelease(arg); } @Override protected boolean tryReleaseShared(int arg) { return super.tryReleaseShared(arg); } @Override protected int tryAcquireShared(int arg) { return super.tryAcquireShared(arg); } @Override protected boolean isHeldExclusively() { return super.isHeldExclusively(); }