BAEL-3091: The Prototype Pattern in Java - Changes based on comments
This commit is contained in:
parent
d3d5b060e7
commit
aafe3d90df
|
@ -0,0 +1,21 @@
|
|||
package com.baeldung.prototype;
|
||||
|
||||
public class PineTree extends Tree {
|
||||
|
||||
private String type;
|
||||
|
||||
public PineTree(double mass, double height) {
|
||||
super(mass, height);
|
||||
this.type = "Pine";
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tree copy() {
|
||||
return new PineTree(this.getMass(), this.getHeight());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.baeldung.prototype;
|
||||
|
||||
public class PlasticTree extends Tree {
|
||||
|
||||
private String name;
|
||||
|
||||
public PlasticTree(double mass, double height) {
|
||||
super(mass, height);
|
||||
this.name = "PlasticTree";
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tree copy() {
|
||||
return new PlasticTree(this.getMass(), this.getHeight());
|
||||
}
|
||||
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
package com.baeldung.prototype;
|
||||
|
||||
public class Tree implements TreeCloneable {
|
||||
public abstract class Tree {
|
||||
|
||||
private double mass;
|
||||
private double height;
|
||||
|
@ -40,15 +40,5 @@ public class Tree implements TreeCloneable {
|
|||
return "Tree [mass=" + mass + ", height=" + height + ", position=" + position + "]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public TreeCloneable createA_Clone() {
|
||||
Tree tree = null;
|
||||
try {
|
||||
tree = (Tree) super.clone();
|
||||
} catch (CloneNotSupportedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
|
||||
public abstract Tree copy();
|
||||
}
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
package com.baeldung.prototype;
|
||||
|
||||
public interface TreeCloneable extends Cloneable {
|
||||
|
||||
TreeCloneable createA_Clone();
|
||||
}
|
|
@ -7,18 +7,35 @@ import org.junit.jupiter.api.Test;
|
|||
public class TreePrototypeUnitTest {
|
||||
|
||||
@Test
|
||||
public void givenATreePrototypeWhenClonedThenCreateA_Clone() {
|
||||
public void givenAPlasticTreePrototypeWhenClonedThenCreateA_Clone() {
|
||||
double mass = 10.0;
|
||||
double height = 3.7;
|
||||
Position position = new Position(3, 7);
|
||||
Position otherPosition = new Position(4, 8);
|
||||
|
||||
Tree tree = new Tree(mass, height);
|
||||
tree.setPosition(position);
|
||||
Tree anotherTree = (Tree) tree.createA_Clone();
|
||||
anotherTree.setPosition(otherPosition);
|
||||
PlasticTree plasticTree = new PlasticTree(mass, height);
|
||||
plasticTree.setPosition(position);
|
||||
PlasticTree anotherPlasticTree = (PlasticTree) plasticTree.copy();
|
||||
anotherPlasticTree.setPosition(otherPosition);
|
||||
|
||||
assertEquals(position, tree.getPosition());
|
||||
assertEquals(otherPosition, anotherTree.getPosition());
|
||||
assertEquals(position, plasticTree.getPosition());
|
||||
assertEquals(otherPosition, anotherPlasticTree.getPosition());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenAPineTreePrototypeWhenClonedThenCreateA_Clone() {
|
||||
double mass = 10.0;
|
||||
double height = 3.7;
|
||||
Position position = new Position(3, 7);
|
||||
Position otherPosition = new Position(4, 8);
|
||||
|
||||
PineTree pineTree = new PineTree(mass, height);
|
||||
pineTree.setPosition(position);
|
||||
PineTree anotherPineTree = (PineTree) pineTree.copy();
|
||||
anotherPineTree.setPosition(otherPosition);
|
||||
|
||||
assertEquals(position, pineTree.getPosition());
|
||||
assertEquals(otherPosition, anotherPineTree.getPosition());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue