classMyClass{publicupdate(){}publicfooBehavior(){}publicchangeState(params){// do somethingthis.fooBehavior();// finallythis.update();}}
现在,我需要允许调用方修改 changeState 要执行的行为
classMyClass{publicupdate(){}publicfooBehavior(){}publicchangeState(params,behaviorType?:string){// do somethingif (behaviorType==='A') {// do behavior A}elseif (behaviorType==='B') {// do behavior B}else{this.fooBehavior();}// finallythis.update();}}
classMyClass{publicupdate(){}publicfooBehavior(){}publicchangeState(params,changeStateHook:ChangeStateHook=newChangeStateHook()){// do somethingchangeStateHook.after(this);// finallythis.update();}}classChangeStateHook{after(instance:MyClass){instance.fooBehabior();}}classConsumerChangeStateHookextendsChangeStateHook{after(instance:MyClass){if(/* some case */) {super.after();}else{// do something else}}}