package pattern;public interface Plain {
Plain makePlain();
}class AreoPlain implements Plain
{
private int speed;
public AreoPlain(int speed)
{
this.speed=speed;
}
@Override
public Plain makePlain() {
return this;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
}
//装饰模式
class EnhancePlain implements Plain
{
private AreoPlain plain;
public EnhancePlain(AreoPlain plain)
{
this.plain=plain;
}
@Override
public Plain makePlain() {
int speed=0;
speed+=200+plain.getSpeed();
plain.setSpeed(speed);
return plain;
}
}// 代理模式
class ProxyPlain implements Plain
{
private AreoPlain plain;
public ProxyPlain(AreoPlain plain)
{
this.plain=plain;
}
@Override
public Plain makePlain() {
if(plain.getSpeed()==400)
{
return plain;
}
else if(plain.getSpeed()==300)
{
return plain;
}
else
{
return plain;
}
}
}