javascript设计模式-------装饰者模式

一、概念

装饰者提供比继承更有弹性的替代方案。 装饰者用于包装同接口的对象,不仅允许你向方法添加行为,而且还可以将方法设置成原始对象调用(例如装饰者的构造函数)。

装饰者通过重载方法的形式添加新功能,该模式可以在被装饰者前面或者后面加上自己的行为以达到特定的目的。


二、实例

function Beverage()
{
	this.description="Unknown Beverage";
	this.cost=function()
	{
		return 0;
	}
}

//饮料一
function Expresso(beverage)
{
	this.description="Expresso";
	this.cost=function()
	{
		return 1+beverage.cost();
	}
}

//饮料二
function HouseBlend(beverage)
{
	this.description="HouseBlend";
	this.cost=function()
	{
		return 8+beverage.cost();
	}
}
//调料
function   Mocha(beverage)
{
	this.description="Mocha";
	this.cost=function()
	{
		return 2+beverage.cost(); 
	}

}

var myBeveraage1=new HouseBlend(new Beverage());
var myBeveraage2=new Mocha(myBeveraage1);
console.log("买一杯加了",myBeveraage2.description,"的"+myBeveraage1.description,"共花了",myBeveraage2.cost());



由代码可知函数可通过递归不断的给对象beberage添加行为,个人以为装饰者模式在javascript中比较少用,毕竟给对象动态地添加行为本来就是javascript的强项,但是递归的思想却值得我们去深究。




你可能感兴趣的:(JavaScript,装饰者模式)