From 57ab80992344f01d7f647fbd67bc1f95f63d3f64 Mon Sep 17 00:00:00 2001 From: wuuixm <149050456+wuuixm@users.noreply.github.com> Date: Sat, 25 Oct 2025 20:58:51 +0800 Subject: [PATCH] add the code --- java/ConcreteCreator.java | 13 +++++++++++++ java/ConcreteProduct.java | 13 +++++++++++++ java/Creator.java | 21 +++++++++++++++++++++ java/Main.java | 18 ++++++++++++++++++ java/Product.java | 7 +++++++ 5 files changed, 72 insertions(+) create mode 100644 java/ConcreteCreator.java create mode 100644 java/ConcreteProduct.java create mode 100644 java/Creator.java create mode 100644 java/Main.java create mode 100644 java/Product.java diff --git a/java/ConcreteCreator.java b/java/ConcreteCreator.java new file mode 100644 index 0000000..480b033 --- /dev/null +++ b/java/ConcreteCreator.java @@ -0,0 +1,13 @@ + + + +public class ConcreteCreator extends Creator { + /** + * 实现工厂方法,创建并返回具体产品实例 + * @return ConcreteProduct实例 + */ + @Override + public Product factoryMethod() { + return new ConcreteProduct(); + } +} \ No newline at end of file diff --git a/java/ConcreteProduct.java b/java/ConcreteProduct.java new file mode 100644 index 0000000..5f37bf8 --- /dev/null +++ b/java/ConcreteProduct.java @@ -0,0 +1,13 @@ + + + + +public class ConcreteProduct extends Product { + /** + * 实现产品的操作方法 + */ + @Override + public void operation() { + System.out.println("具体产品的操作方法被调用"); + } +} \ No newline at end of file diff --git a/java/Creator.java b/java/Creator.java new file mode 100644 index 0000000..dfff0f9 --- /dev/null +++ b/java/Creator.java @@ -0,0 +1,21 @@ + + + + +public abstract class Creator { + /** + * 工厂方法,由具体工厂类实现 + * @return 创建的产品实例 + */ + public abstract Product factoryMethod(); + + /** + * 操作方法,使用工厂方法创建的产品 + */ + public void someOperation() { + // 调用工厂方法创建产品 + Product product = factoryMethod(); + // 使用产品 + product.operation(); + } +} \ No newline at end of file diff --git a/java/Main.java b/java/Main.java new file mode 100644 index 0000000..5cf9ddd --- /dev/null +++ b/java/Main.java @@ -0,0 +1,18 @@ + +public class Main { + /** + * 主方法,用于测试工厂方法模式 + * @param args 命令行参数 + */ + public static void main(String[] args) { + // 创建具体工厂实例 + Creator creator = new ConcreteCreator(); + + // 调用工厂的操作方法,该方法会使用工厂方法创建产品并调用产品的操作 + creator.someOperation(); + + // 直接使用工厂方法创建产品 + Product product = creator.factoryMethod(); + product.operation(); + } +} \ No newline at end of file diff --git a/java/Product.java b/java/Product.java new file mode 100644 index 0000000..529309a --- /dev/null +++ b/java/Product.java @@ -0,0 +1,7 @@ + +public abstract class Product { + /** + * 产品的操作方法,由具体产品类实现 + */ + public abstract void operation(); +} \ No newline at end of file