装饰模式理解
package 裝飾模式;// 核心戰(zhàn)術(shù) public abstract class MainTactics {// 進(jìn)攻 public abstract void attack(); // 是否成功 public abstract void success();}
package 裝飾模式;/*** 通過這個(gè)類來進(jìn)行 對(duì)原始類的一個(gè)擴(kuò)展, 可以即插即用擴(kuò)展業(yè)務(wù)感覺。 需要擴(kuò)展其中的一個(gè)業(yè)務(wù)的時(shí)候, 只要繼承這個(gè)類就可以了。* * 不會(huì)對(duì)原來的有什么影響。 直接擴(kuò)展,處理業(yè)務(wù)。* * * ***/ public abstract class TacticsList extends MainTactics {private MainTactics tactics;public TacticsList(MainTactics tactics) {this.tactics = tactics;}public void attack() {this.tactics.attack();}@Overridepublic void success() {this.tactics.success();}}
package 裝飾模式;public class TacticsOne extends TacticsList{public TacticsOne(MainTactics tactics) {super(tactics);}public void attackOne(){System.out.println("戰(zhàn)術(shù)執(zhí)行,先突破,然后分球給內(nèi)線");}@Overridepublic void attack() {super.attack();this.attackOne();} }
package 裝飾模式;public class TacticsTwo extends TacticsList {public TacticsTwo(MainTactics tactics) {super(tactics);}public void attackTwo() {System.out.println("內(nèi)線網(wǎng)外傳,直接飆3分");}@Overridepublic void attack() {super.attack();this.attackTwo();}}
package 裝飾模式;public class Main {public static void main(String[] args) {// 下面添加另外一種進(jìn)攻手段。 (擴(kuò)展一種另外的業(yè)務(wù)處理)MainTactics tactics = new CBATactics(); // 最原始的,最核心業(yè)務(wù) tactics = new TacticsOne(tactics); // 直接包裝 核心業(yè)務(wù) , 在原來的基礎(chǔ)上直接添加。 同時(shí)又對(duì)原來的業(yè)務(wù)沒有任何干擾。tactics = new TacticsTwo(tactics); // 進(jìn)行再次的包裝業(yè)務(wù),處理業(yè)務(wù)。 tactics.attack();}}
package 裝飾模式;/*** 通過這個(gè)類來進(jìn)行 對(duì)原始類的一個(gè)擴(kuò)展, 可以即插即用擴(kuò)展業(yè)務(wù)感覺。 需要擴(kuò)展其中的一個(gè)業(yè)務(wù)的時(shí)候, 只要繼承這個(gè)類就可以了。* * 不會(huì)對(duì)原來的有什么影響。 直接擴(kuò)展,處理業(yè)務(wù)。* * * ***/ public abstract class TacticsList extends MainTactics {private MainTactics tactics;public TacticsList(MainTactics tactics) {this.tactics = tactics;}public void attack() {this.tactics.attack();}@Overridepublic void success() {this.tactics.success();}}
package 裝飾模式;public class TacticsOne extends TacticsList{public TacticsOne(MainTactics tactics) {super(tactics);}public void attackOne(){System.out.println("戰(zhàn)術(shù)執(zhí)行,先突破,然后分球給內(nèi)線");}@Overridepublic void attack() {super.attack();this.attackOne();} }
package 裝飾模式;public class TacticsTwo extends TacticsList {public TacticsTwo(MainTactics tactics) {super(tactics);}public void attackTwo() {System.out.println("內(nèi)線網(wǎng)外傳,直接飆3分");}@Overridepublic void attack() {super.attack();this.attackTwo();}}
package 裝飾模式;public class Main {public static void main(String[] args) {// 下面添加另外一種進(jìn)攻手段。 (擴(kuò)展一種另外的業(yè)務(wù)處理)MainTactics tactics = new CBATactics(); // 最原始的,最核心業(yè)務(wù) tactics = new TacticsOne(tactics); // 直接包裝 核心業(yè)務(wù) , 在原來的基礎(chǔ)上直接添加。 同時(shí)又對(duì)原來的業(yè)務(wù)沒有任何干擾。tactics = new TacticsTwo(tactics); // 進(jìn)行再次的包裝業(yè)務(wù),處理業(yè)務(wù)。 tactics.attack();}}
總結(jié)
- 上一篇: 高频词提取
- 下一篇: 【NLP基础理论】02 N-grams语