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();

      }

    }

  • 相关阅读:
    Razor使用方法
    Razor视图中的@:和<text>语法
    【洛谷p1031】均分纸牌
    Python读写文件
    对象传参数中引用是否被覆盖的情形
    Python中的random模块
    mysql数据库 安装 (原创)
    MYSQL常用命令
    MySQL查询数据表中数据记录(包括多表查询)
    127.0.0.1
  • 原文地址:https://www.cnblogs.com/zhuqiang/p/2469786.html
Copyright © 2011-2022 走看看