常见设计模式之【装饰模式】

装饰模式:顾名思义就是跟他加层层外套,或者说是给一个实体增加更多的形容词

请看demo让你一目了然,呵呵....你懂滴

package Decorator;
/**
 *@Description: 装饰模式
 *@author Potter   
 *@date 2012-9-10 下午05:35:07
 *@version V1.0   
 */
public class App {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Coffee coffee=new Tang(new Nai(new NaTie()));

		System.out.println("coffee's cost="+coffee.getCost());
		System.out.println("coffee's message="+coffee.getMessage());
	}
	
}

coffee类:

package Decorator;
/**
 *@Description: 咖啡类
 *@author Potter   
 *@date 2012-9-10 下午05:21:35
 *@version V1.0   
 */
public interface Coffee {
	public float getCost();
	
	public String getMessage();
	
}

装饰核心类:

package Decorator;
/**
 *@Description:装饰模式核心 
 *@author Potter   
 *@date 2012-9-10 下午05:21:14
 *@version V1.0   
 */
public class Decorator implements Coffee{
	protected Coffee coffee;
	
	public Decorator(Coffee coffee){
		this.coffee=coffee;
	}

	@Override
	public float getCost() {
		return coffee.getCost();
	}

	@Override
	public String getMessage() {
		return coffee.getMessage();
	}

}

实体蓝山咖啡类:

package Decorator;
/**
 *@Description: 蓝色咖啡
 *@author Potter   
 *@date 2012-9-10 下午05:25:46
 *@version V1.0   
 */
public class LanShan implements Coffee {

	@Override
	public float getCost() {
		return 20f;
	}

	@Override
	public String getMessage() {
		return "蓝山咖啡";
	}

}

实体拿铁咖啡类:

package Decorator;
/**
 *@Description: 拿铁咖啡
 *@author Potter   
 *@date 2012-9-10 下午05:23:53
 *@version V1.0   
 */
public class NaTie implements Coffee {

	@Override
	public float getCost() {
		return 10f;
	}

	@Override
	public String getMessage() {
		return "拿铁咖啡";
	}

}


装饰类奶:

package Decorator;
/**
 *@Description:奶 
 *@author Potter   
 *@date 2012-9-10 下午05:33:13
 *@version V1.0   
 */
public class Nai extends Decorator {

	public Nai(Coffee coffee) {
		super(coffee);
	}
	
	@Override
	public float getCost() {
		return super.getCost()+5;
	}
	
	@Override
	public String getMessage() {
		return "加奶的"+super.getMessage();
	}
}


装饰类糖:

package Decorator;
/**
 *@Description: 糖
 *@author Potter   
 *@date 2012-9-10 下午05:30:49
 *@version V1.0   
 */
public class Tang extends Decorator {

	public Tang(Coffee coffee) {
		super(coffee);
	}
	
	@Override
	public String getMessage() {
		return "加糖的"+super.getMessage();
	}

}

运行结果:

coffee's cost=15.0
coffee's message=加糖加奶的拿铁咖啡


呵呵~   很容易理解吧!



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Potter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值