From c2bf6a5516e73f40c8b6d26fea1301c71f597dee Mon Sep 17 00:00:00 2001 From: dyk123 <2090911948@qq.com> Date: Tue, 28 Oct 2025 21:38:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ConcreteProductA.java | 6 ++++++ src/main/java/ConcreteProductB.java | 6 ++++++ src/main/java/Factory.java | 13 +++++++++++++ src/main/java/FactoryTest.java | 17 +++++++++++++++++ src/main/java/Product.java | 3 +++ 5 files changed, 45 insertions(+) create mode 100644 src/main/java/ConcreteProductA.java create mode 100644 src/main/java/ConcreteProductB.java create mode 100644 src/main/java/Factory.java create mode 100644 src/main/java/FactoryTest.java create mode 100644 src/main/java/Product.java diff --git a/src/main/java/ConcreteProductA.java b/src/main/java/ConcreteProductA.java new file mode 100644 index 0000000..3c3c0c4 --- /dev/null +++ b/src/main/java/ConcreteProductA.java @@ -0,0 +1,6 @@ +public class ConcreteProductA implements Product { + @Override + public void operation() { + System.out.println("ConcreteProductA operation"); + } +} \ No newline at end of file diff --git a/src/main/java/ConcreteProductB.java b/src/main/java/ConcreteProductB.java new file mode 100644 index 0000000..0f17fd9 --- /dev/null +++ b/src/main/java/ConcreteProductB.java @@ -0,0 +1,6 @@ +public class ConcreteProductB implements Product { + @Override + public void operation() { + System.out.println("ConcreteProductB operation"); + } +} \ No newline at end of file diff --git a/src/main/java/Factory.java b/src/main/java/Factory.java new file mode 100644 index 0000000..159f8c0 --- /dev/null +++ b/src/main/java/Factory.java @@ -0,0 +1,13 @@ +public class Factory { + public static Product createProduct(String type) { + if (type == null) { + return null; + } + if (type.equalsIgnoreCase("A")) { + return new ConcreteProductA(); + } else if (type.equalsIgnoreCase("B")) { + return new ConcreteProductB(); + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/FactoryTest.java b/src/main/java/FactoryTest.java new file mode 100644 index 0000000..5960b43 --- /dev/null +++ b/src/main/java/FactoryTest.java @@ -0,0 +1,17 @@ +public class FactoryTest { + public static void main(String[] args) { + // 测试创建ConcreteProductA + Product productA = Factory.createProduct("A"); + System.out.println("创建产品A:"); + productA.operation(); + + // 测试创建ConcreteProductB + Product productB = Factory.createProduct("B"); + System.out.println("\n创建产品B:"); + productB.operation(); + + // 测试无效类型 + Product invalidProduct = Factory.createProduct("C"); + System.out.println("\n创建无效产品:" + (invalidProduct == null ? "返回null" : "失败")); + } +} \ No newline at end of file diff --git a/src/main/java/Product.java b/src/main/java/Product.java new file mode 100644 index 0000000..a413802 --- /dev/null +++ b/src/main/java/Product.java @@ -0,0 +1,3 @@ +public interface Product { + void operation(); +} \ No newline at end of file