java装饰模式

Uml图:


//Bird类:

public abstract class Bird {
   public abstract int fly();
}

//具体组件:
Sparrow.java

public class Sparrow extends Bird {
      private final int DISTANCE = 100;

      @Override
      public int fly() {
            return DISTANCE;
      }
}

//装饰

Decorator.java

public abstract class Decorator extends Bird {
      protected Bird bird;

      public Decorator(Bird bird) {
            this.bird = bird;
      }
}

//具体装饰:

SparrowDecorator.java

public class SparrowDecorator extends Decorator {
      public final int DISTANCE = 50;

      SparrowDecorator(Bird bird) {
            super(bird);
      }

      @Override
      public int fly() {
            int distance = 0;
            distance = bird.fly() + eleFly();
            return distance;
      }

      private int eleFly() {
            return DISTANCE;
      }

}

//装饰模式使用:

public class Application {
      private static void needBird(Bird bird) {
            int flyDistance =bird.fly();
            System.out.println("飞行距离"+flyDistance+"米");
            
      }
      public static void main(String[] args) {
      Bird sparrowBird =new Sparrow();
      Bird sparrowBird2=new SparrowDecorator(sparrowBird);
      Bird sparrowBird3 =new SparrowDecorator(sparrowBird2);
      needBird(sparrowBird);
      needBird(sparrowBird2);
      needBird(sparrowBird3);
      }

}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值