diff --git a/design_patterns/pom.xml b/design_patterns/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..363807aba831778608d0fc35eafe9d3a99812bc6
--- /dev/null
+++ b/design_patterns/pom.xml
@@ -0,0 +1,24 @@
+
+
+ 4.0.0
+
+ com.hongyi
+ design_patterns
+ 1.0-SNAPSHOT
+
+
+ 15
+ 15
+
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.22
+
+
+
+
\ No newline at end of file
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/AmericanCoffee.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/AmericanCoffee.java
new file mode 100644
index 0000000000000000000000000000000000000000..b45a3ed0a4a33c1951845131977c20602f38d668
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/AmericanCoffee.java
@@ -0,0 +1,13 @@
+package com.hongyi.pattern.factory.bofore;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 16:11
+ * @Version 1.0
+ */
+public class AmericanCoffee extends Coffee{
+ @Override
+ public String getName() {
+ return "美式咖啡";
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/Coffee.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/Coffee.java
new file mode 100644
index 0000000000000000000000000000000000000000..e5a1676bc6217b4d876fb77806abf72337f5d378
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/Coffee.java
@@ -0,0 +1,21 @@
+package com.hongyi.pattern.factory.bofore;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 16:08
+ * @Version 1.0
+ */
+public abstract class Coffee {
+
+ public abstract String getName();
+
+ // 加糖
+ public void addSugar() {
+ System.out.println("加糖");
+ }
+
+ // 加奶
+ public void addMilk() {
+ System.out.println("加奶");
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/CoffeeStore.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/CoffeeStore.java
new file mode 100644
index 0000000000000000000000000000000000000000..799a370ff27962392633049ad0f5b49bf71f40f7
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/CoffeeStore.java
@@ -0,0 +1,22 @@
+package com.hongyi.pattern.factory.bofore;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 16:12
+ * @Version 1.0
+ */
+public class CoffeeStore {
+ public Coffee orderCoffee(String type) {
+ Coffee coffee = null;
+ if ("amrican".equals(type)) {
+ coffee = new AmericanCoffee();
+ } else if ("latte".equals(type)) {
+ coffee = new LatteCaffe();
+ } else {
+ throw new RuntimeException("对不起,没有您点的咖啡");
+ }
+ coffee.addMilk();
+ coffee.addSugar();
+ return coffee;
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/LatteCaffe.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/LatteCaffe.java
new file mode 100644
index 0000000000000000000000000000000000000000..e3c37fbf51d9df88d379f38a57239eda39b104eb
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/LatteCaffe.java
@@ -0,0 +1,13 @@
+package com.hongyi.pattern.factory.bofore;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 16:12
+ * @Version 1.0
+ */
+public class LatteCaffe extends Coffee{
+ @Override
+ public String getName() {
+ return "拿铁咖啡";
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/Test.java
new file mode 100644
index 0000000000000000000000000000000000000000..3b142376fa73e025bcf4cdf1fc2f76b49d79eeb6
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/bofore/Test.java
@@ -0,0 +1,14 @@
+package com.hongyi.pattern.factory.bofore;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 16:15
+ * @Version 1.0
+ */
+public class Test {
+ public static void main(String[] args) {
+ CoffeeStore store = new CoffeeStore();
+ Coffee coffee = store.orderCoffee("latte");
+ System.out.println(coffee.getName());
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/AmericanCoffee.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/AmericanCoffee.java
new file mode 100644
index 0000000000000000000000000000000000000000..b0a8d332a75bf629fdbc0637c456da3605b7466e
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/AmericanCoffee.java
@@ -0,0 +1,13 @@
+package com.hongyi.pattern.factory.factory_abstract;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 16:11
+ * @Version 1.0
+ */
+public class AmericanCoffee extends Coffee {
+ @Override
+ public String getName() {
+ return "美式咖啡";
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/AmericanDessertFactory.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/AmericanDessertFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..6c4b441beb68a518314fa66f892748da770a1ff2
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/AmericanDessertFactory.java
@@ -0,0 +1,18 @@
+package com.hongyi.pattern.factory.factory_abstract;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 19:33
+ * @Version 1.0
+ */
+public class AmericanDessertFactory implements DessertFactory{
+ @Override
+ public Coffee createCoffee() {
+ return new AmericanCoffee();
+ }
+
+ @Override
+ public Dessert createDessert() {
+ return new Mousse();
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Coffee.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Coffee.java
new file mode 100644
index 0000000000000000000000000000000000000000..3602a6eeaa082559554a65f0a5646a83c0593284
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Coffee.java
@@ -0,0 +1,21 @@
+package com.hongyi.pattern.factory.factory_abstract;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 16:08
+ * @Version 1.0
+ */
+public abstract class Coffee {
+
+ public abstract String getName();
+
+ // 加糖
+ public void addSugar() {
+ System.out.println("加糖");
+ }
+
+ // 加奶
+ public void addMilk() {
+ System.out.println("加奶");
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Dessert.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Dessert.java
new file mode 100644
index 0000000000000000000000000000000000000000..357f6869740df3e2e5d0809332427fc595ae596f
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Dessert.java
@@ -0,0 +1,10 @@
+package com.hongyi.pattern.factory.factory_abstract;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 19:29
+ * @Version 1.0
+ */
+public abstract class Dessert {
+ public abstract void show();
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/DessertFactory.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/DessertFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..fc2a30378c70efc1f426c454af10b04bf9605146
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/DessertFactory.java
@@ -0,0 +1,14 @@
+package com.hongyi.pattern.factory.factory_abstract;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 19:32
+ * @Version 1.0
+ */
+public interface DessertFactory {
+ // 生产咖啡
+ Coffee createCoffee();
+
+ // 生产甜品
+ Dessert createDessert();
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/ItalyDessertFactory.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/ItalyDessertFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..d0be91540dedafeab9eeb53165158a1eb3cb0cf1
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/ItalyDessertFactory.java
@@ -0,0 +1,19 @@
+package com.hongyi.pattern.factory.factory_abstract;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 19:34
+ * @Version 1.0
+ */
+public class ItalyDessertFactory implements DessertFactory{
+
+ @Override
+ public Coffee createCoffee() {
+ return new LatteCaffe();
+ }
+
+ @Override
+ public Dessert createDessert() {
+ return new Tiramisu();
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/LatteCaffe.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/LatteCaffe.java
new file mode 100644
index 0000000000000000000000000000000000000000..704eaa1616908b7d3f34e78a9822f0179db32b3a
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/LatteCaffe.java
@@ -0,0 +1,13 @@
+package com.hongyi.pattern.factory.factory_abstract;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 16:12
+ * @Version 1.0
+ */
+public class LatteCaffe extends Coffee {
+ @Override
+ public String getName() {
+ return "拿铁咖啡";
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Mousse.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Mousse.java
new file mode 100644
index 0000000000000000000000000000000000000000..cd9cf53e6d479d769882a2f884fc81958748730d
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Mousse.java
@@ -0,0 +1,13 @@
+package com.hongyi.pattern.factory.factory_abstract;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 19:31
+ * @Version 1.0
+ */
+public class Mousse extends Dessert{
+ @Override
+ public void show() {
+ System.out.println("抹茶慕斯");
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Test.java
new file mode 100644
index 0000000000000000000000000000000000000000..0ebc1634f4fd81e61fdf290672b8b53efdd0496c
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Test.java
@@ -0,0 +1,16 @@
+package com.hongyi.pattern.factory.factory_abstract;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 19:35
+ * @Version 1.0
+ */
+public class Test {
+ public static void main(String[] args) {
+ ItalyDessertFactory factory = new ItalyDessertFactory();
+ Coffee coffee = factory.createCoffee();
+ Dessert dessert = factory.createDessert();
+ System.out.println(coffee.getName());
+ dessert.show();
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Tiramisu.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Tiramisu.java
new file mode 100644
index 0000000000000000000000000000000000000000..809785f44fc54a8af72afbf484603daa47c45236
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_abstract/Tiramisu.java
@@ -0,0 +1,13 @@
+package com.hongyi.pattern.factory.factory_abstract;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 19:30
+ * @Version 1.0
+ */
+public class Tiramisu extends Dessert{
+ @Override
+ public void show() {
+ System.out.println("提拉米苏");
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_config/AmericanCoffee.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_config/AmericanCoffee.java
new file mode 100644
index 0000000000000000000000000000000000000000..6483ae6851459891a1c83c0bf5913283665805ad
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_config/AmericanCoffee.java
@@ -0,0 +1,13 @@
+package com.hongyi.pattern.factory.factory_config;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 16:11
+ * @Version 1.0
+ */
+public class AmericanCoffee extends Coffee {
+ @Override
+ public String getName() {
+ return "美式咖啡";
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_config/Coffee.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_config/Coffee.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e9f84ef3e35bcdabc976f88431873d4e8a0cbb3
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_config/Coffee.java
@@ -0,0 +1,21 @@
+package com.hongyi.pattern.factory.factory_config;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 16:08
+ * @Version 1.0
+ */
+public abstract class Coffee {
+
+ public abstract String getName();
+
+ // 加糖
+ public void addSugar() {
+ System.out.println("加糖");
+ }
+
+ // 加奶
+ public void addMilk() {
+ System.out.println("加奶");
+ }
+}
diff --git a/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_config/CoffeeFactory.java b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_config/CoffeeFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..44914d5796476020c999dcfe303a6f5c9b7c9ab1
--- /dev/null
+++ b/design_patterns/src/main/java/com/hongyi/pattern/factory/factory_config/CoffeeFactory.java
@@ -0,0 +1,51 @@
+package com.hongyi.pattern.factory.factory_config;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Properties;
+import java.util.Set;
+
+/**
+ * @Author Kisugi Takumi
+ * @Date 2022/10/2 19:50
+ * @Version 1.0
+ */
+public class CoffeeFactory {
+
+ // 1.定义容器对象存储咖啡对象
+ private static HashMap map = new HashMap<>();
+
+ // 2.加载配置文件(只需要加载一次,因此使用静态代码块),创建配置文件中的对象并存储
+ static {
+ // 2.1创建Properties对象
+ Properties p = new Properties();
+ // 2.2调用p对象中的load方法进行配置文件的加载
+ InputStream is = CoffeeFactory.class.getClassLoader().getResourceAsStream("bean.properties");
+ try {
+ p.load(is);
+ // 从p集合中获取全类名并创建对象
+ Set