将所有基类声明为抽象类,并让子类继承并扩展基类。具体类应该是叶子类,不再扩展其他类。以下是示例代码:
// 抽象基类 public abstract class AbstractShape { public abstract void draw(); }
// 具体叶子类 public class Square extends AbstractShape { @Override public void draw() { // 画正方形的实现代码 } }
public class Circle extends AbstractShape { @Override public void draw() { // 画圆形的实现代码 } }
// 抽象中间类 public abstract class AbstractShapeDecorator extends AbstractShape { protected AbstractShape decoratedShape;
public AbstractShapeDecorator(AbstractShape decoratedShape) {
this.decoratedShape = decoratedShape;
}
}
// 具体装饰器类 public class RedShapeDecorator extends AbstractShapeDecorator { public RedShapeDecorator(AbstractShape decoratedShape) { super(decoratedShape); }
@Override
public void draw() {
decoratedShape.draw();
setRedBorder(decoratedShape);
}
private void setRedBorder(AbstractShape decoratedShape){
// 设置红色边框的实现代码
}
}