Shape接口
public interface Shape { public void draw(); }circle实现接口
public class Circle implements Shape{ @Override public void draw() { System.out.println("这是圆"); } }rectangle实现接口
public class Rectangle implements Shape{ @Override public void draw() { System.out.println("这是矩形"); } }创建实现了 Shape 接口的抽象装饰类
public abstract class ShapeDecorator implements Shape{ protected Shape shape; public ShapeDecorator(Shape shape){ this.shape = shape; } @Override public void draw(){ this.shape.draw(); } }创建扩展了 ShapeDecorator 类的实体装饰类
public class RedShapeDecorator extends ShapeDecorator{ public RedShapeDecorator(Shape shape) { super(shape); } @Override public void draw() { shape.draw(); setRedBorder(); } private void setRedBorder() { System.out.println("Border Color: Red"); } }使用 RedShapeDecorator 来装饰 Shape 对象
public class DecoratorPatternDemo { public static void main(String[] args) { /**没有装饰的 **/ Circle circle = new Circle(); circle.draw(); ShapeDecorator shapeDecorator = new RedShapeDecorator(new Circle()); shapeDecorator.draw(); ShapeDecorator shapeDecorator1 = new RedShapeDecorator(new Rectangle()); shapeDecorator1.draw(); } }