装饰着模式

package com.henu.Decorator;
/**
 * 汉堡基类
 * @author rock
 */
public abstract class Humburger {
	  protected  String name;    
	  public String getName(){    
	       return name;    
	  }    
	  public abstract double getPrice();    
}
package com.henu.Decorator;
/**
 * 鸡腿堡类(被装饰者的初始状态,有些自己的简单装饰,相当于上面的Person)
 * @author rock
 */
public class ChickenBurger extends Humburger{

	@Override
	public double getPrice() {
		// TODO Auto-generated method stub
		return 10.0;
	}
	public ChickenBurger(){    
        name = "鸡腿堡";    
    } 
} package com.henu.Decorator;
/**
 * 配料的基类(装饰者,用来对汉堡进行多层装饰,每层装饰增加一些配料,相当于上面Decorator)
 * @author rock
 *
 */
public abstract class Condiment extends Humburger{
	public abstract String getName();
}
package com.henu.Decorator;
/**
 * 生菜(装饰者的第一层,相当于上面的decorator_zero)
 * @author rock
 *
 */
public class Lettuce extends Condiment{
	Humburger humburger;
	public Lettuce(Humburger humburger){
		this.humburger = humburger;
	}
	@Override
	public String getName() {
		return humburger.getName();
	}

	@Override
	public double getPrice() {
		return humburger.getPrice()+1.5;
	}
}

package com.henu.Decorator;
/**
 * 辣椒(装饰者的第二层)
 * @author rock
 *
 */
public class Chilli extends Condiment{
	Humburger humburger;    
    public Chilli(Humburger humburger){    
        this.humburger = humburger;    
	}
	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return humburger.getName()+"+辣椒";
	}

	@Override
	public double getPrice() {
		// TODO Auto-generated method stub
		return humburger.getPrice(); //辣椒是免费的
	}

} public class Test {
	public static void main(String[] args) {
		 Humburger humburger = new ChickenBurger();    
	     System.out.println(humburger.getName()+"  价钱:"+humburger.getPrice());    
	     Lettuce lettuce = new Lettuce(humburger);    
	     System.out.println(lettuce.getName()+"  价钱:"+lettuce.getPrice());    
	     Chilli chilli = new Chilli(humburger);    
	     System.out.println(chilli.getName()+"  价钱:"+chilli.getPrice());    
	     Chilli chilli2 = new Chilli(lettuce);    
	     System.out.println(chilli2.getName()+"  价钱:"+chilli2.getPrice());    
	}
}


鸡腿堡  价钱:10.0
鸡腿堡  价钱:11.5
鸡腿堡+辣椒  价钱:10.0
鸡腿堡+辣椒  价钱:11.5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值