简单工厂模式概述
简单工厂模式是一种常见的设计模式,它属于创造型模式。简单工厂模式提供了一个简单工厂类,它将客户端的请求转化为合适的类的实例对象,从而实现类的实例化。简单工厂模式的核心思想是将对象的创建过程封装起来,客户端只关注如何使用该对象,而无需了解其创建过程。这种模式虽然简单,但非常实用。
Java示例
假设我们需要创建一个汽车,它可以是奔驰、宝马、奥迪等类型的汽车,同时我们需要这些汽车都具有统一的属性和方法。我们可以首先定义一个Car
接口:
public interface Car {
void drive();
}
然后,我们可以定义具体的汽车类MercedesBenz、BMW和Audi,实现Car接口:
public class MercedesBenz implements Car {
public void drive() {
System.out.println("Driving Mercedes Benz");
}
}
public class BMW implements Car {
public void drive() {
System.out.println("Driving BMW");
}
}
public class Audi implements Car {
public void drive() {
System.out.println("Driving Audi");
}
}
接着,我们定义一个工厂类CarFactory
,它负责根据用户的需求来创建适当的具体汽车类的实例对象。具体的实现方式是根据传入参数来选择具体的汽车类:
public class CarFactory {
public static Car createCar(String carType) {
if (carType.equalsIgnoreCase("MercedesBenz")) {
return new MercedesBenz();
} else if (carType.equalsIgnoreCase("BMW")) {
return new BMW();
} else if (carType.equalsIgnoreCase("Audi")) {
return new Audi();
} else {
throw new IllegalArgumentException("Unsupported car type: " + carType);
}
}
}
最后,在客户端代码中,我们可以使用工厂类的静态方法createCar来创建具体汽车类的实例对象,而无需了解具体汽车类的创建过程:
Car car = CarFactory.createCar("MercedesBenz");
car.drive();
这样就完成了简单工厂模式的Java演示。
优点和缺点
优点:
- 将对象创建过程封装在工厂方法中,可以减少代码重复,提高代码的可维护性和可扩展性;
- 工厂类可以专注于对象的创建,避免了客户端代码中过多的对象创建和管理。
- 通过工厂类生成实例,可以对创建出的对象进行统一的管理,在增加或修改该对象的属性或方法时,只需修改工厂类即可。
缺点:
- 当需要增加一个新的产品时,需要修改工厂类代码,如果产品较多,会导致工厂类变得庞大和复杂。
- 在工厂类中增加新的产品时,需要修改工厂类的代码,容易违反“开闭原则”。
- 简单工厂模式构建了工厂和产品的直接关系,工厂类职责过重,会导致代码可维护性和可扩展性的下降。
总之,简单工厂模式作为创建型模式,可以很好的解耦客户端和具体实现类之间的关系,同时它对于相同的产品具有拓展性,能够方便的添加新产品。虽然模式本身比较简单,但在具体的使用时仍需要遵循相应的规范和要求。
- 本文链接: http://maltose.top/archives/23-zhong-she-ji-mo-shi---jian-dan-gong-chang-mo-shi
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!