工厂方法模式是一种创建型设计模式,它提供了一种方式来封装对象的创建过程。在工厂方法模式中,客户端不直接创建对象,而是调用一个工厂方法来创建对象。这个工厂方法通常由接口定义,并由子类或实现类实现。
以下是一个简单的 Java 版本的工厂方法模式的示例:
- public interface Animal {
- void speak();
- }
-
- public class Dog implements Animal {
- public void speak() {
- System.out.println("Woof!");
- }
- }
-
- public class Cat implements Animal {
- public void speak() {
- System.out.println("Meow!");
- }
- }
-
- public abstract class AnimalFactory {
- public abstract Animal createAnimal();
- }
-
- public class DogFactory extends AnimalFactory {
- public Animal createAnimal() {
- return new Dog();
- }
- }
-
- public class CatFactory extends AnimalFactory {
- public Animal createAnimal() {
- return new Cat();
- }
- }
-
- public class Main {
- public static void main(String[] args) {
- AnimalFactory dogFactory = new DogFactory();
- Animal dog = dogFactory.createAnimal();
- dog.speak(); // Outputs: "Woof!"
-
- AnimalFactory catFactory = new CatFactory();
- Animal cat = catFactory.createAnimal();
- cat.speak(); // Outputs: "Meow!"
- }
- }
在这个示例中,AnimalFactory 是一个抽象工厂,它定义了一个 createAnimal 工厂方法。DogFactory 和 CatFactory 是具体的工厂,它们实现了 createAnimal 方法来创建 Dog 和 Cat 对象。客户端(Main 类)使用工厂来创建对象,而不是直接使用 new 关键字。这样,如果我们想改变创建对象的方式,我们只需要修改工厂,而不需要修改客户端代码。