From e4ce7c374469ba649ad0aecdf6c5bad8528d6ce9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=E5=98=89=E9=98=B3?= Date: Tue, 25 Sep 2018 22:39:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E4=BA=8E=E6=8A=BD=E8=B1=A1=E7=B1=BB?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=9A=84=E5=8E=9F=E5=9E=8B=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../abstractprototype/AbstractPig.java | 14 ++++++++++++++ .../prototype/abstractprototype/Pig.java | 8 ++++++++ .../prototype/abstractprototype/PigTest.java | 18 ++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 src/main/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/AbstractPig.java create mode 100644 src/main/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/Pig.java create mode 100644 src/test/java/top/fjy8018/designpattern/pattern/creational/prototype/abstractprototype/PigTest.java 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