zoukankan      html  css  js  c++  java
  • Head First Design Patterns Decorator Pattern

    Design Principle(Open-Closed Principle)

    • Classes should be open for extension, but closed for modification.

    The Decorator Pattern attaches additional responsibilitis to an object dynamically.

    Decorator provide a flexible alternative to subclassing for extending functionality.

    public abstract class Beverage{

      String description = "unknown Beverage";

      public String getDescription(){

        return description;

      }

      public abstract double cost();

    }

    public abstract class CondimentDecorator extends Beverage{

      public abstract String getDescription();

    }

    public class Espresso extends Beverage{

      public Espresso(){

        description = "Espresso";

      }

      public double cost(){

        return 1.99;

      }

    }

    public class HouseBlend extends Beverage{

      public HouseBlend(){

        description = "House Blend Coffee";

      }

      public double cost(){

        return 0.89;

      }

    }

    public class Mocha extends CondimentDecorator{

      Beverage beverage;

      public Mocha(Beverage beverage){

        this.beverage = beverage;

      }

      public String getDescription(){

        return beverage.getDescription +", Mocha";

      }

      public double cost(){

        return 0.20 + beverage.cost();

      }

    }

  • 相关阅读:
    关于在MAC上进行 LARAVEL 环境 Homestead 安装过程记录
    js 贷款计算器
    js 实现阶乘
    js 两点间距离函数
    composer Your requirements could not be resolved to an installable set of packages
    vue 项目优化记录 持续更新...
    vue 项目打包
    vue 真机调试页面出现空白
    vue 真机调试
    谈谈-Android状态栏的编辑
  • 原文地址:https://www.cnblogs.com/zhuqiang/p/2469786.html
Copyright © 2011-2022 走看看