From 85e368d790da479eab844166ff33c8f14daceb89 Mon Sep 17 00:00:00 2001 From: Vivek Balasubramaniam Date: Tue, 29 Oct 2019 22:27:15 +0530 Subject: [PATCH] BAEL-3091: The Prototype Pattern in Java (changed code based on valid comments from a reader) --- .../src/main/java/com/baeldung/prototype/Tree.java | 14 +++++++------- .../java/com/baeldung/prototype/TreeCloneable.java | 6 ++++++ .../baeldung/prototype/TreePrototypeUnitTest.java | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java diff --git a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java index f95d568647..513f720885 100644 --- a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java @@ -1,6 +1,6 @@ package com.baeldung.prototype; -public class Tree implements Cloneable { +public class Tree implements TreeCloneable { private double mass; private double height; @@ -36,7 +36,12 @@ public class Tree implements Cloneable { } @Override - public Tree clone() { + public String toString() { + return "Tree [mass=" + mass + ", height=" + height + ", position=" + position + "]"; + } + + @Override + public TreeCloneable createA_Clone() { Tree tree = null; try { tree = (Tree) super.clone(); @@ -46,9 +51,4 @@ public class Tree implements Cloneable { return tree; } - @Override - public String toString() { - return "Tree [mass=" + mass + ", height=" + height + ", position=" + position + "]"; - } - } diff --git a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java new file mode 100644 index 0000000000..7767b8de73 --- /dev/null +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java @@ -0,0 +1,6 @@ +package com.baeldung.prototype; + +public interface TreeCloneable extends Cloneable { + + TreeCloneable createA_Clone(); +} diff --git a/patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java index 0d06da53d6..ef42d92899 100644 --- a/patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java +++ b/patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java @@ -15,7 +15,7 @@ public class TreePrototypeUnitTest { Tree tree = new Tree(mass, height); tree.setPosition(position); - Tree anotherTree = tree.clone(); + Tree anotherTree = (Tree) tree.createA_Clone(); anotherTree.setPosition(otherPosition); assertEquals(position, tree.getPosition());