diff --git a/src/main/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/AbstractPig.java b/src/main/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/AbstractPig.java new file mode 100644 index 0000000..a313bf5 --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/AbstractPig.java @@ -0,0 +1,14 @@ +package top.fjy8018.designpattern.pattern.creational.prototype.abstractprototype; + +/** + * 使用抽象类或者接口实现克隆接口可使得其所有子类都有克隆能力 + * + * @author F嘉阳 + * @date 2018-09-25 22:36 + */ +public abstract class AbstractPig implements Cloneable { + @Override + protected Object clone() throws CloneNotSupportedException { + return super.clone(); + } +} diff --git a/src/main/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/Pig.java b/src/main/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/Pig.java new file mode 100644 index 0000000..1f444a8 --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/Pig.java @@ -0,0 +1,8 @@ +package top.fjy8018.designpattern.pattern.creational.prototype.abstractprototype; + +/** + * @author F嘉阳 + * @date 2018-09-25 22:37 + */ +public class Pig extends AbstractPig { +} diff --git a/src/test/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/PigTest.java b/src/test/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/PigTest.java new file mode 100644 index 0000000..891dda8 --- /dev/null +++ b/src/test/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/PigTest.java @@ -0,0 +1,18 @@ +package top.fjy8018.designpattern.pattern.creational.prototype.abstractprototype; + +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +@Slf4j +class PigTest { + + @Test + void cloneTest() throws Exception { + Pig p1 = new Pig(); + Pig p2 = (Pig) p1.clone(); + log.info(Integer.toHexString(p1.hashCode())); + log.info(Integer.toHexString(p2.hashCode())); + } +} \ No newline at end of file