Java设计模式之-工厂模式
什么是工厂模式
工厂模式(Factory Pattern)是一种在软件开发中常用的设计模式。该模式的主要目的是提供一个用于创建对象的接口,然后将实际创建对象的任务委托给实现这个接口的类,而不是直接使用 new 操作符。
主要解决什么问题
工厂模式主要解决了代码的耦合问题。当你直接创建对象时,你的代码会变得与特定的类紧密耦合,这会导致代码的维护和修改变得困难。通过使用工厂模式,可以把对象的创建和使用分离,使得代码更加灵活和易于维护。
在什么时候我们需要使用工厂模式
当我们需要创建的对象类型在运行时可能会变化,或者我们希望将对象的创建和使用分离以提高代码的灵活性和可维护性时,我们通常会选择使用工厂模式。
生活中的应用实例
想象一下你去了一家快餐店,你可以点汉堡、炸鸡、可乐等各种食物和饮料,但你并不需要知道这些食物和饮料是如何制作的。这就是工厂模式的一个生活中的例子,快餐店就像是一个工厂,你只需要告诉它你要什么,它就会为你制作。
优点
可以避免创建对象的代码与特定类的耦合,提高了代码的灵活性。
更容易扩展,如果需要增加新的产品,只需要扩展工厂类即可。
缺点
每添加一个新的产品,就需要增加一个具体类和对应的工厂,增加了代码的复杂度。
使用场景
工厂模式通常在以下场景中使用:
当一个类不知道它所需要的对象的类。
当一个类希望由它的子类来指定它所创建的对象。
当类将创建对象的职责委托给多个帮助类中的某一个,并且你希望将哪一个帮助类是代理类这一信息局部化。
代码举例
public interface Animal {
void speak();
}
public class Dog implements Animal {
public void speak() {
System.out.println("Woof Woof");
}
}
public class Cat implements Animal {
public void speak() {
System.out.println("Meow Meow");
}
}
public class AnimalFactory {
public Animal getAnimal(String type) {
if ("Dog".equals(type)) {
return new Dog();
} else if ("Cat".equals(type)) {
return new Cat();
}
return null;
}
}
public class Main {
public static void main(String[] args) {
AnimalFactory animalFactory = new AnimalFactory();
Animal dog = animalFactory.getAnimal("Dog");
dog.speak(); // Outputs: Woof Woof
Animal cat = animalFactory.getAnimal("Cat");
cat.speak(); // Outputs: Meow Meow
}
}
在这个例子中,AnimalFactory 就是一个工厂类,它负责创建 Dog 和 Cat 对象。Main 类并不直接创建 Dog 和 Cat 对象,而是通过 AnimalFactory 来创建,这样就将对象的创建和使用分离了。