工厂模式是一种常用的软件开发模式,它的主要目的是把实例化对象的任务交给工厂来完成,而不是让客户端程序直接创建对象,这样可以简化客户端程序的设计和实现,而且可以让客户端程序与实例化的对象解耦。工厂模式主要涉及到三个角色:工厂类、抽象产品类和具体产品类。
应用
工厂模式在软件开发中有着广泛的应用,它可以用来创建各种不同类型的对象,如数据库连接、网络连接、线程等。工厂模式也可以用来创建复杂的对象,如报表、图表等。工厂模式还可以用来创建框架,如Spring框架、Struts框架等。
优点
- 客户端程序与实例化的对象解耦,可以简化客户端程序的设计和实现。
- 可以把实例化对象的任务交给工厂来完成,从而提高系统的灵活性。
- 可以提高系统的可维护性,只需要修改工厂类的代码,而不需要修改客户端程序。
- 可以把实例化对象的任务交给工厂来完成,从而提高系统的可扩展性。
缺点
- 工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违背了开闭原则。
- 由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。
使用方法
// 定义抽象产品类 public abstract class Product { public abstract void use(); } // 定义具体产品类 public class ConcreteProduct1 extends Product { @Override public void use() { System.out.println("使用具体产品1"); } } public class ConcreteProduct2 extends Product { @Override public void use() { System.out.println("使用具体产品2"); } } // 定义工厂类 public class Factory { public static Product getProduct(String type) { if (type.equals("1")) { return new ConcreteProduct1(); } else if (type.equals("2")) { return new ConcreteProduct2(); } return null; } } // 使用 Product product = Factory.getProduct("1"); product.use();