装饰模式

   class  Program
    
{
        
static void Main(string[] args)
        
{

            Beverage beverage 
= new Espresso();
            Console.WriteLine(beverage.getDesciption() 
+ "$" + beverage.cost());

            Beverage beverage2 
= new Espresso();
            Beverage beverage3 
= new Mocha(beverage2);
            Beverage beverage4 
= new Mocha(beverage3);
            beverage3 
= new Mocha(beverage2);
            beverage2 
= new Mocha(beverage2);
            Console.WriteLine(beverage4.getDesciption() 
+ "$" + beverage4.cost());
        }

    }


    
public   abstract   class  Beverage 
    
{
        
public  string description = "Unknown Beverage";

        
public String getDesciption() 
        
{
            
return description;
        }

        
public abstract double cost();
    }


    
public   abstract   class  CondimentDecorator:Beverage
    
{
        
public abstract string getDescription();
    }


    
public   class  Espresso : Beverage 
    
{
        
public Espresso() 
        
{
            description 
= "Espresso";
        }

        
public override double cost() 
        
{
            
return 1.99;
        }

    }


    
public   class  HouseBlend : Beverage
    
{
        
public HouseBlend()
        
{
            description 
= "House Blend Coffee";
        }

        
public override double cost() 
        
{
            
return 0.89;
        }

    }


    
public   class  Mocha : CondimentDecorator 
    
{
        Beverage beverage;
        
public Mocha(Beverage beverage) 
        
{
            
this.beverage = beverage;
        }


        
public override String  getDescription() 
        
{
            
return beverage.getDesciption() + ",Mocha";
        }


        
public override double cost()
        
{
            
return 0.20 + beverage.cost();
        }

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值