《JAVA与模式》第9天―装饰模式 (二)

2014-11-24 08:24:27 · 作者: · 浏览: 1
6 上午09:23:34
*
* @类说明 :具体装饰角色
*/
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 上午