工厂模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
工厂模式提供了一种将对象的实例化过程封装在工厂类中的方式。通过使用工厂模式,可以将对象的创建与使用代码分离,提供一种统一的接口来创建不同类型的对象。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
优缺点
优点包括:
- 可以将对象的创建和使用解耦,从而提高系统的灵活性和可维护性。
- 工厂模式可以隐藏对象的创建细节,使客户端只关心对象的使用,从而降低系统的复杂度。
- 工厂模式可以通过扩展工厂类或增加新的工厂类来添加新的产品,从而提高系统的扩展性和可维护性。
缺点包括:
- 工厂模式会增加系统的类和对象的个数,从而增加系统的复杂度。
- 工厂模式需要额外的工作量来创建和维护工厂类和产品类,从而增加系统的开发成本。
- 工厂模式可能会降低系统的性能,因为客户端需要通过调用工厂方法来创建对象,从而增加了系统的开销。
应用实例
您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。
代码实现
- 创建一个汽车接口
public interface Car {
void show();
}
- 创建两个汽车接口的实现类
public class BenzCar implements Car {
@Override
public void show() {
System.out.println("奔驰。。。");
}
}
public class BmwCar implements Car {
@Override
public void show() {
System.out.println("宝马。。。");
}
}
- 创建一个工厂,生成基于给定信息的实现类的对象
public class CarFactory {
public static Car getCarShow(String name) {
if ("benz".equals(name)){
return new BenzCar();
} else if ("bmw".equals(name)) {
return new BmwCar();
} else {
return null;
}
}
}
- 使用该工厂,通过传递类型信息来获取实现类的对象
public class FactoryPatternDemo {
public static void main(String[] args) {
Car benz = CarFactory.getCarShow("benz");
benz.show();
Car bmw = CarFactory.getCarShow("bmw");
bmw.show();
}
}
- 执行程序,输出结果