工厂模式的基本定义是什么?它有哪些具体的应用场景?

工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,使得具体实现类的创建逻辑从客户代码中解耦出来,使得客户代码不需要关心具体的对象是如何被创建出来的。工厂模式主要有三种形式:简单工厂、工厂方法和抽象工厂。

  1. 简单工厂(Simple Factory):简单工厂其实并不是一个设计模式,更多的是一种编程习惯。它的主要思想是创建一个工厂类,你可以通过传入参数或者条件,然后在工厂类中使用 switch 或者 if-else 语句来产生不同的类实例。

  2. 工厂方法(Factory Method):工厂方法是一个真正的设计模式,它定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类。

  3. 抽象工厂(Abstract Factory):抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户程序需要创建一个ConcreteFactory的对象,然后利用这个对象创建一系列的产品。

以下是一个工厂方法模式的简单例子:

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 Client {
    public static void main(String[] args) {
        AnimalFactory factory = new DogFactory();
        Animal dog = factory.createAnimal();
        dog.speak();  // Output: "Woof!"

        factory = new CatFactory();
        Animal cat = factory.createAnimal();
        cat.speak();  // Output: "Meow!"
    }
}

在这个例子中,DogFactoryCatFactory 都是 AnimalFactory 的子类,分别创建 DogCat 对象。AnimalFactory 是一个抽象的工厂类,定义了创建对象的接口(createAnimal),具体由哪个类实例化由子类 (DogFactoryCatFactory) 决定。这样,如果我们要添加新的 Animal 类型,只需要添加相应的工厂类就可以了,而不需要修改 client 代码。

发表评论

后才能评论