装饰模式理解

    xiaoxiao2026-08-11  12

    package 装饰模式; // 核心战术 public abstract class MainTactics { // 进攻 public abstract void attack(); // 是否成功 public abstract void success(); }

    package 装饰模式; //核心业务类 public class CBATactics extends MainTactics { @Override public void attack() { System.out.println("战术: 进攻内线......"); } @Override public void success() { System.out.println("成功80%"); } } package 装饰模式; /** * 通过这个类来进行 对原始类的一个扩展, 可以即插即用扩展业务感觉。 需要扩展其中的一个业务的时候, 只要继承这个类就可以了。 * * 不会对原来的有什么影响。 直接扩展,处理业务。 * * * ***/ public abstract class TacticsList extends MainTactics { private MainTactics tactics; public TacticsList(MainTactics tactics) { this.tactics = tactics; } public void attack() { this.tactics.attack(); } @Override public void success() { this.tactics.success(); } } package 装饰模式; public class TacticsOne extends TacticsList{ public TacticsOne(MainTactics tactics) { super(tactics); } public void attackOne(){ System.out.println("战术执行,先突破,然后分球给内线"); } @Override public 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分"); } @Override public 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(); } }

    转载请注明原文地址: https://ju.6miu.com/read-1311079.html
    最新回复(0)