*
* @类说明 :具体装饰角色
*/
public class ConcreteDecoratorB extends Decorator {
public ConcreteDecoratorB(Component component) {
super(component);
}
@Override
public void sampleOperation() {
super.sampleOperation();
// 写相关的业务代码
}
}
齐天大圣的例子
孙悟空有七十二般变化,他的每一种变化都给他带来一种附加的本领。他变成鱼儿时,就可以到水里游泳;他变成鸟儿时,就可以在天上飞行。
本例中,Component的角色便由鼎鼎大名的齐天大圣扮演;ConcreteComponent的角色属于大圣的本尊,就是猢狲本人;Decorator的角色由大圣的七十二变扮演。而ConcreteDecorator的角色便是鱼儿、鸟儿等七十二般变化。

源代码
抽象构件角色“齐天大圣”接口定义了一个move()方法,这是所有的具体构件类和装饰类必须实现的。
[java]
package com.bankht.Decorator.wukong;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-26 上午09:28:23
*
* @类说明 :抽象构件角色“齐天大圣”接口定义了一个move()方法,这是所有的具体构件类和装饰类必须实现的。
*/
// 大圣的尊号
public interface TheGreatestSage {
public void move();
}
package com.bankht.Decorator.wukong;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-26 上午09:28:23
*
* @类说明 :抽象构件角色“齐天大圣”接口定义了一个move()方法,这是所有的具体构件类和装饰类必须实现的。
*/
// 大圣的尊号
public interface TheGreatestSage {
public void move();
}
具体构件角色“大圣本尊”猢狲类
[java]
package com.bankht.Decorator.wukong;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-26 上午09:28:50
*
* @类说明 :具体构件角色“大圣本尊”猢狲类
*/
public class Monkey implements TheGreatestSage {
@Override
public void move() {
// 代码
System.out.println("Monkey Move");
}
}
package com.bankht.Decorator.wukong;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-26 上午09:28:50
*
* @类说明 :具体构件角色“大圣本尊”猢狲类
*/
public class Monkey implements TheGreatestSage {
@Override
public void move() {
// 代码
System.out.println("Monkey Move");
}
}
抽象装饰角色“七十二变”
[java]
package com.bankht.Decorator.wukong;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-26 上午09:29:24
*
* @类说明 :抽象装饰角色“七十二变”
*/
public class Change implements TheGreatestSage {
private TheGreatestSage sage;
public Change(TheGreatestSage sage) {
this.sage = sage;
}
@Override
public void move() {
// 代码
sage.move();
}
}
package com.bankht.Decorator.wukong;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-26 上午09:29:24
*
* @类说明 :抽象装饰角色“七十二变”
*/
public class Change implements TheGreatestSage {
private TheGreatestSage sage;
public Change(TheGreatestSage sage) {
this.sage = sage;
}
@Override
public void move() {
// 代码
sage.move();
}
}
具体装饰角色“鱼儿”
[java]
package com.bankht.Decorator.wukong;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-26 上午09:29:47
*
* @类说明 :具体装饰角色“鱼儿”
*/
public class Fish extends Change {
public Fish(TheGreatestSage sage) {
super(sage);
}
@Override
public void move() {
// 代码
System.out.println("Fish Move");
}
}
package com.bankht.Decorator.wukong;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-26 上午09:29:47
*
* @类说明 :具体装饰角色“鱼儿”
*/
public class Fish extends Change {
public Fish(TheGreatestSage sage) {
super(sage);
}
@Override
public void move() {
// 代码
System.out.println("Fish Move");
}
}
具体装饰角色“鸟儿”
[java]
package com.bankht.Decorator.wukong;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-26 上午09:30:11
*
* @类说明 :具体装饰角色“鸟儿”
*/
public class Bird extends Change {
public Bird(TheGreatestSage sage) {
super(sage);
}
@Override
public void move() {
// 代码
System.out.println("Bird Move");
}
}
package com.bankht.Decorator.wukong;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-26 上午