diff --git a/code/Java/design-pattern/pom.xml b/code/Java/design-pattern/pom.xml new file mode 100644 index 0000000..0dff2d4 --- /dev/null +++ b/code/Java/design-pattern/pom.xml @@ -0,0 +1,32 @@ + + + 4.0.0 + + com.heibaiying + design-pattern + 1.0 + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + + + org.projectlombok + lombok + 1.18.10 + provided + + + + \ No newline at end of file diff --git a/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/HuaweiPhone.java b/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/HuaweiPhone.java new file mode 100644 index 0000000..dbbfbcd --- /dev/null +++ b/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/HuaweiPhone.java @@ -0,0 +1,8 @@ +package com.heibaiying.creational.SimpleFactory; + + +public class HuaweiPhone extends Phone { + public void call(String phoneNum) { + System.out.println("华为手机拨打电话:" + phoneNum); + } +} diff --git a/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/Phone.java b/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/Phone.java new file mode 100644 index 0000000..0bcb519 --- /dev/null +++ b/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/Phone.java @@ -0,0 +1,8 @@ +package com.heibaiying.creational.SimpleFactory; + +/** + * 手机 + */ +public abstract class Phone { + public abstract void call(String phoneNum); +} diff --git a/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/PhoneFactory.java b/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/PhoneFactory.java new file mode 100644 index 0000000..6786866 --- /dev/null +++ b/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/PhoneFactory.java @@ -0,0 +1,29 @@ +package com.heibaiying.creational.SimpleFactory; + + +public class PhoneFactory { + + public Phone getPhone(String type) { + if ("xiaomi".equalsIgnoreCase(type)) { + return new XiaomiPhone(); + } else if ("huawei".equalsIgnoreCase(type)) { + return new HuaweiPhone(); + } + return null; + } + + public Phone getPhone(Class phoneClass) { + try { + return (Phone) Class.forName(phoneClass.getName()).newInstance(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + return null; + } + + +} diff --git a/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/Test.java b/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/Test.java new file mode 100644 index 0000000..906d69d --- /dev/null +++ b/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/Test.java @@ -0,0 +1,12 @@ +package com.heibaiying.creational.SimpleFactory; + + +public class Test { + public static void main(String[] args) { + PhoneFactory phoneFactory = new PhoneFactory(); + phoneFactory.getPhone("xiaomi").call("123"); + phoneFactory.getPhone("huawei").call("321"); + phoneFactory.getPhone(XiaomiPhone.class).call("456"); + phoneFactory.getPhone(HuaweiPhone.class).call("654"); + } +} diff --git a/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/XiaomiPhone.java b/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/XiaomiPhone.java new file mode 100644 index 0000000..7325ceb --- /dev/null +++ b/code/Java/design-pattern/src/main/java/com/heibaiying/creational/SimpleFactory/XiaomiPhone.java @@ -0,0 +1,7 @@ +package com.heibaiying.creational.SimpleFactory; + +public class XiaomiPhone extends Phone { + public void call(String phoneNum) { + System.out.println("小米手机拨打电话:" + phoneNum); + } +}