设计模式之装饰器模式

package decorate;
/**
* 设计模式之装饰器模式:动态给某个对象添加一些额外的职责。
* 该模式涉及4个角色
* 1、接口或者是抽象类(Abstract)
* 2、需要被装饰的对象(Impl)---实现接口或者继承抽象类
* 3、装饰类(Decorate)--也实现接口或者继承抽象类
* 4、继承装饰类的子类(DecorateImpl)
*
* @author
* @since Pattern 1.0.0
* @created 2013-1-18
*/
public class Test {

public static void main(String[] args) {
Abstract impl = new Impl();
Decorate decorate = new DecorateImpl(impl);
decorate.buy();
}
}

package decorate;

/**
* 抽象类或者接口
*
* @author
* @since Pattern 1.0.0
* @created 2013-1-18
*/
public abstract class Abstract {

public abstract void buy();
}

package decorate;

/**
* 实现类,该类实现Abstract
*
* @author
* @since Pattern 1.0.0
* @created 2013-1-18
*/
public class Impl extends Abstract{

@Override
public void buy() {
System.out.println("buy meat...");
}
}


package decorate;

/**
* 装饰器
*
* @author
* @since Pattern 1.0.0
* @created 2013-1-18
*/
public class Decorate extends Abstract{

private Abstract impl;

public Decorate(Abstract impl){
this.impl = impl;
}

@Override
public void buy() {
impl.buy();
}

}


package decorate;

/**
* 具体的装饰器
*
* @author
* @since Pattern 1.0.0
* @created 2013-1-18
*/
public class DecorateImpl extends Decorate{

public DecorateImpl(Abstract impl) {
super(impl);
}

public void buy(){
this.goToShop();
super.buy();
this.payMoney();
this.backHome();
}

public void goToShop(){
System.out.println("goto shop...");
}

public void payMoney(){
System.out.println("pay money...");
}

public void backHome(){
System.out.println("back home...");
}
}



测试结果:

goto shop...
buy meat...
pay money...
back home...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值