本文转载自微信公众号《打个蛋》,作者陈玉明。转载本文请联系码蛋公众号。代码抽象基类publicabstractclasshero{publicabstractintattack()publicabstractintcooling().......}实现基类publicclass李白extendshero{@Overridepublicintcooling(){return5;}.......}buff抽象类publicabstractBuffextendshero{publicabstractintattack()publicabstractintcooling()......}不同的Buff实现类publicredbuffextendsBuff{privateherohero;publicredbuff(hero英雄){this.hero=hero;}@Overridepublicintattack(){returnhero.attack()+redbuffextraattack;}.......}publicbluebuffextendsBuff{privateherohero;publicbluebuff(herohero){this.hero=Hero;}@Overridepublicintcooldown(){returnhero.cooldown()+bluebuffextrareducedcooldownvalue;}......}clientpublicclassClient{publicstaticvoidmain(String[]args){//noHeroeswithbuffHerowithoutbuff李白=新李白();//hitredbuffredbuffLiBai=newredbuff(nobuffLiBai);//anotherbasketbuffredandbluebuffLiBai=newbasketbuff(redbuffLiBai);}}注:以上代码块为类名和变量名写了中文,方便理解。记得在实战过程中将它们替换成相应的英文。《Head first 设计模式》的总结
