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();
        }
    }
  • 相关阅读:
    Python爬虫之-动态网页数据抓取
    Python爬虫之 正则表达式和re模块
    Python爬虫 XPath语法和lxml模块
    Python 多线程爬虫
    PAT 1037 在霍格沃茨找零钱
    PAT 1033 旧键盘打字
    PAT 1019 数字黑洞
    PAT 1057 数零壹
    PAT 1026 程序运行时间
    PAT 1023 组个最小数
  • 原文地址:https://www.cnblogs.com/zengxiaoliang/p/8084710.html
Copyright © 2011-2022 走看看