zoukankan      html  css  js  c++  java
  • 装饰器模式

    装饰器模式

    装饰者模式定义

    装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更 有弹性,装饰者模式也体现了开闭原则(ocp) 这里提到的动态的将新功能附加到对象和ocp原则

    装饰器模式比较适合多对多属性的组合模式

    例如 咖啡 有 多种类型的咖啡 咖啡的配料又有多种类型的配料,糖,牛奶..咖啡和配料可以任意组合

    可以抽象以一个咖啡的接口或抽象类,将配料抽象出一个抽象类,将咖啡组合入配料中。

    public class Demo {
        public static void main(String[] args) {
            double v = new Soy(new Milk(new ShortBlack())).orderPrice();
            System.out.println(v);
    
        }
    
    }
    
    /**
     * 抽象出一个饮料类
     */
    abstract class Drink {
    
        protected double price;
        protected  String name;
    
        abstract double orderPrice();
    }
    
    class ShortBlack extends Drink {
    
        public ShortBlack() {
            this.name = "ShortBlack";
            this.price=1;
        }
    
        @Override
        double orderPrice() {
            return this.price;
        }
    }
    
    /**
     * 配料抽象类
     */
    class Decorator extends Drink{
    
        protected Drink drink;
        protected double price;
    
    
        @Override
        double orderPrice() {
            return 0;
        }
    }
    
    class Milk extends Decorator {
    
    
        public Milk(Drink drink) {
            this.price = 2;
            this.drink=drink;
        }
    
        @Override
        double orderPrice() {
            return this.drink.orderPrice()+this.price;
        }
    }
    
    class Soy extends Decorator {
    
    
        public Soy(Drink drink) {
            this.price = 3;
            this.drink=drink;
        }
    
        @Override
        double orderPrice() {
            return this.drink.orderPrice()+this.price;
        }
    }
    
  • 相关阅读:
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
    第八周课程总结&实验报告六
    第七周
    第六周
    课程总结
    第十四周课程总结&实验报告
    第十三周总结
    第十二周总结
  • 原文地址:https://www.cnblogs.com/huangshen/p/13307807.html
Copyright © 2011-2022 走看看