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