为矩形、圆形装 饰边框为例
- //创建一个接口
- public interface Shape {
- void draw();
- }
-
- //实现接口的实体类。
-
- public class Rectangle implements Shape {
-
- @Override
- public void draw() {
- System.out.println("Shape: Rectangle");
- }
- }
-
- public class Circle implements Shape {
-
- @Override
- public void draw() {
- System.out.println("Shape: Circle");
- }
- }
-
-
- //实现Shape接口的抽象装饰类
-
- public abstract class ShapeDecorator implements Shape {
-
- protected Shape decoratedShape;
-
- public ShapeDecorator(Shape decoratedShape){
- this.decoratedShape = decoratedShape;
- }
-
- public void draw(){
- decoratedShape.draw();
- }
- }
-
- //扩展ShapeDecorator类的实体装饰类
-
- public class RedShapeDecorator extends ShapeDecorator {
-
- public RedShapeDecorator(Shape decoratedShape) {
- super(decoratedShape);
- }
-
- @Override
- public void draw() {
- decoratedShape.draw();
- setRedBorder(decoratedShape);
- }
-
- private void setRedBorder(Shape decoratedShape){
- System.out.println("Border Color: Red");
- }
- }
-
- //使用
- public static void main(String[] args) {
- Shape circle = new Circle();
- Shape redCircle = new RedShapeDecorator(new Circle());
- Shape redRectangle = new RedShapeDecorator(new Rectangle());
- System.out.println("Circle with normal border");
- circle.draw();
- System.out.println("\nCircle of red border");
- redCircle.draw();
- System.out.println("\nRectangle of red border");
- redRectangle.draw();
- }