zoukankan      html  css  js  c++  java
  • Java设计模式——装饰模式

    转载自:http://blog.csdn.net/xu__cg/article/details/53024490

    抽象构件

    public interface CarInterface {
        void move();
    }

    具体构建

    public class Car implements CarInterface {
        public void move() {
            System.out.println("路上行驶");
        }
    }

    装饰角色

    public class SuperCar implements CarInterface {
        protected CarInterface car;
    
        public SuperCar(CarInterface car) {
            this.car = car;
        }
    
        public void move() {
            car.move();
        }
    }

    具体装饰角色

    /**
     * 飞行汽车
     */
    public class FlyCar extends SuperCar {
        public FlyCar(CarInterface car) {
            super(car);
        }
    
        public void fly() {
            System.out.println("空中行驶汽车");
        }
    
        @Override
        public void move() {
            super.move();
            fly();
        }
    }
    
    /**
     * 水上汽车
     */
    public class WaterCar extends SuperCar {
        public WaterCar(CarInterface car) {
            super(car);
        }
    
        public void swim() {
            System.out.println("水上行驶汽车");
        }
    
        @Override
        public void move() {
            super.move();
            swim();
        }
    }

    客户端

    public class Client {
        public static void main(String[] args) {
            System.out.println("------普通汽车,正常行驶-----");
            Car car = new Car();
            car.move();
    
            System.out.println("------增加新功能,飞行------");
            FlyCar flyCar = new FlyCar(car);
            flyCar.move();
    
            System.out.println("------新增加功能,水上行驶-----");
            WaterCar waterCar = new WaterCar(car);
            waterCar.move();
    
            System.out.println("-----新增加两个功能,飞行与水上行驶-----");
            WaterCar waterCar2 = new WaterCar(flyCar);
            waterCar2.move();
        }
    }
  • 相关阅读:
    vector容器(一)
    螺旋数组实现
    zigzag数组实现
    HDU 1496
    HDU 1381 Crazy Search
    什么叫软核,固核,硬核?
    “杜拉拉思维模式”之六:小组面试提升术
    硬件工程师电路设计必须紧记的十大要点
    面试的“群殴”宝典
    三段式状态机 [CPLD/FPGA]
  • 原文地址:https://www.cnblogs.com/zengxiaoliang/p/8084710.html
Copyright © 2011-2022 走看看