设计模式 - 工厂模式(Factory Pattern)
介绍
工厂模式是一种创建型设计模式,它提供了一个创建对象的最佳方式。在工厂模式中,当创建对象时,不会对客户端暴露创建逻辑,而是通过传递一个共同的接口来指向新创建的对象。
工厂模式有两种主要类型:简单工厂模式(也称静态工厂方法模式)、工厂方法模式(Factory Method Pattern)。
实现
这里我们将以创建不同的动物实例为例,来演示这两种工厂模式的实现。
简单工厂模式
简单工厂模式使用一个工厂类负责创建所有实例。
定义接口或抽象类
public abstract class Animal {
public abstract void makeSound();
}
创建具体实现类
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Woof!");
}
}
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow!");
}
}
创建工厂类
public class AnimalFactory {
public static Animal createAnimal(String type) {
if ("dog".equals(type)) {
return new Dog();
} else if ("cat".equals(type)) {
return new Cat();
}
return null;
}
}
工厂方法模式
工厂方法模式允许每个子类决定实例化哪一个类。
定义工厂接口
public interface AnimalFactory {
Animal create();
}
创建具体工厂类
public class DogFactory implements AnimalFactory {
@Override
public Animal create() {
return new Dog();
}
}
public class CatFactory implements AnimalFactory {
@Override
public Animal create() {
return new Cat();
}
}
使用工厂方法模式
public class Client {
public static void main(String[] args) {
AnimalFactory factory;
// 使用DogFactory创建Dog对象
factory = new DogFactory();
Animal dog = factory.create();
dog.makeSound(); // 输出 "Woof!"
// 使用CatFactory创建Cat对象
factory = new CatFactory();
Animal cat = factory.create();
cat.makeSound(); // 输出 "Meow!"
}
}
使用场景
工厂模式适用于:
- 当一个类不知道它所必须创建的对象的确切类的时候。
- 当一个系统应该独立于它的产品创建、构成和表示时。
- 当一个类希望由它的子类来指定它所创建的对象的时候。
总结
工厂模式是创建型设计模式中的一种,它提供了一种创建对象的方式而不暴露创建逻辑。简单工厂模式通过静态工厂方法创建对象,而工厂方法模式则允许子类决定实例化哪个类。这两种模式都能有效地封装创建过程,使得系统的扩展更加灵活。
以上就是工厂模式的实现和应用示例,希望能帮助你更好地理解和使用这种设计模式。
评论区