diff --git a/src/main/java/shape/Decorator.java b/src/main/java/shape/Decorator.java
new file mode 100644
index 0000000000000000000000000000000000000000..d2428a05cf83f2e2d7baa58cc7690686a1b99c0c
--- /dev/null
+++ b/src/main/java/shape/Decorator.java
@@ -0,0 +1,29 @@
+package shape;
+import javafx.scene.canvas.GraphicsContext;
+import javafx.geometry.Point2D;
+
+public abstract class Decorator implements Shape {
+    protected Shape decoratedShape;
+
+    public Decorator(Shape decoratedShape) {
+        this.decoratedShape = decoratedShape;
+    }
+
+    @Override
+    public int pointsCount() {
+        return decoratedShape.pointsCount();
+    }
+
+    @Override
+    public Point2D point(int index) {
+        return decoratedShape.point(index);
+    }
+
+    @Override
+    public void draw(GraphicsContext graphicsContext) {
+        decoratedShape.draw(graphicsContext);
+        drawDecoration(graphicsContext);
+    }
+
+    protected abstract void drawDecoration(GraphicsContext graphicsContext);
+}