Java实现(10)——装饰者模式(Decorator Pattern)
2016-12-17 10:13
549 查看
装饰者模式允许开发者向一个已经存在的对象中增加新的功能,而不改变对象的结构。这种模式创建一个原类的包装类,通过提供额外的功能保持原有对象的简洁性。
本例中通过创建一个Shape接口,具体实现Shape接口的类,创建装饰类ShapeDecorator实现Shape接口,同时拥有一个Shape对象的实例。
public interface Shape {
void draw();
}
输出:
Circle with normal border
Shape: Cricle
Circle of red border
Shape: Cricle
Border Color: Red
Rectangle of red border
Shape: Rectangle
Border Color: Red
本例中通过创建一个Shape接口,具体实现Shape接口的类,创建装饰类ShapeDecorator实现Shape接口,同时拥有一个Shape对象的实例。
public interface Shape {
void draw();
}
public class Circle implements Shape { @Override public void draw() { System.out.println("Shape: Cricle"); } }
public class Rectangle implements Shape { @Override public void draw() { System.out.println("Shape: Rectangle"); } }
public abstract class ShapeDecorator implements Shape{ protected Shape decoratedShape; public ShapeDecorator(Shape decoratedShape) { this.decoratedShape = decoratedShape; } @Override public void draw() { decoratedShape.draw(); } }
public class RedShapeDecorator extends ShapeDecorator{ public RedShapeDecorator(Shape decoratedShape) { super(decoratedShape); } @Override public void draw() { decoratedShape.draw(); setRedBorder(decoratedShape); } public void setRedBorder(Shape decoratedShape) { System.out.println("Border Color: Red"); } }
public class Demo { 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(); } }
输出:
Circle with normal border
Shape: Cricle
Circle of red border
Shape: Cricle
Border Color: Red
Rectangle of red border
Shape: Rectangle
Border Color: Red
相关文章推荐
- 设计模式 - 装饰者模式(Decorator Pattern) Java的IO类 用法
- nf设计模式 - 修饰模式 (Decorator pattern) 的 Java 实现
- Java设计模式:装饰者模式(Decorator Pattern)
- Head First 设计模式 (三) 装饰者模式(decorator pattern) C++实现
- Java设计模式之装饰者模式(Decorator pattern)
- java设计模式---装饰者模式(decorator pattern)
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- Java设计模式-装饰者模式(Decorator Pattern)
- 设计模式 - 装饰者模式(Decorator Pattern) Java的IO类 使用方法
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 设计模式 - 装饰者模式(Decorator Pattern) Java的IO类 用法
- Java 实现装饰者(Decorator)模式
- Java设计模式--装饰者模式【Decorator Pattern】
- java实现装饰器模式(Decorator Pattern)
- java设计模式—装饰者模式(Decorator Pattern)
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- Java 实现装饰者(Decorator)模式