
工厂模式是一种创建型设计模式,它提供了一种创建对象的方法,而不必指定将要创建的对象的确切类。在工厂模式中,我们在创建对象时不会直接使用 new 关键字,而是使用工厂方法来处理对象的创建。
工厂模式的优点
1: 降低代码耦合性:客户端不需要知道要实例化的对象的类名,降低了客户端与具体产品对象之间的耦合。
2: 降低了代码的复杂度:将对象的创建和使用分离,代码更易于维护。
3: 代码可扩展性更好:增加新的产品对象时,只需要添加新的具体产品类和相应的工厂类,不需要修改原有的代码。
工厂模式的实现
工厂模式有三种实现方式:简单工厂模式、工厂方法模式和抽象工厂模式。
简单工厂模式
简单工厂模式又称为静态工厂方法模式,它是通过一个工厂类来创建不同类型的对象,客户端只需要传入参数,就可以得到所需的对象,而无需知道具体的创建过程。下面是简单工厂模式的代码实现:
public class SimpleFactory {
public static Product createProduct(int type {
switch (type {
case 1:
return new ConcreteProduct1(;
case 2:
return new ConcreteProduct2(;
default:
throw new IllegalArgumentException(“Invalid type”;
}
}
}工厂方法模式
工厂方法模式定义了一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式使一个类的实例化延迟到其子类。下面是工厂方法模式的代码实现:
public interface Factory {
Product createProduct(;
}
public class ConcreteFactory1 implements Factory {
public Product createProduct( {
return new ConcreteProduct1(;
}
}
public class ConcreteFactory2 implements Factory {
public Product createProduct( {
return new ConcreteProduct2(;
}
}抽象工厂模式
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。下面是抽象工厂模式的代码实现:
public interface AbstractFactory {
ProductA createProductA(;
ProductB createProductB(;
}
public class ConcreteFactory1 implements AbstractFactory {
public ProductA createProductA( {
return new ConcreteProductA1(;
}
public ProductB createProductB( {
return new ConcreteProductB1(;
}
}
public class ConcreteFactory2 implements AbstractFactory {
public ProductA createProductA( {
return new ConcreteProductA2(;
}
public ProductB createProductB( {
return new ConcreteProductB2(;
}
}总结
工厂模式是一种非常常用的设计模式,它可以帮助我们更好地组织代码并提高代码的可扩展性和可维护性。在实际开发中,我们应该根据具体的需求选择不同的工厂模式来实现。