作者:cndz 围观群众:1093 更新于 标签:设计模式设计模式之工厂模式工厂模式讲解
工厂模式是一种创建型设计模式,它提供了一个统一的接口来创建对象,而不需要知道具体的实现细节。在Java中,工厂模式非常常见,例如JDBC中的DataSource、Spring框架中的BeanFactory等都是工厂模式的应用。本文主要介绍工厂模式的概念、优缺点以及实现方法。
工厂模式将对象的创建过程隐藏在工厂类的内部,客户端只需要调用工厂类的方法就可以获取到所需的对象。这样做的好处是客户端和具体实现类之间解耦,可以在不影响客户端的情况下更改实现类。
优点:
缺点:
工厂模式有很多种实现方法,下面介绍其中三种常用的方法。
简单工厂模式指的是将对象的创建过程封装在一个工厂类中,客户端只需要调用该工厂类的静态方法即可获得所需的对象。这种方法适用于工厂类不需要经常变动的情况。
public class SimpleFactory {
public static Product createProduct(String type) {
if ("A".equals(type)) {
return new ConcreteProductA();
} else if ("B".equals(type)) {
return new ConcreteProductB();
}
return null;
}
}
工厂方法模式指的是将对象的创建过程抽象成一个接口,在具体的工厂类中实现该接口来创建对象。这种方法适用于工厂类需要经常变动的情况。
public interface Factory {
Product createProduct();
}
public class ConcreteFactoryA implements Factory {
public Product createProduct() {
return new ConcreteProductA();
}
}
public class ConcreteFactoryB implements Factory {
public Product createProduct() {
return new ConcreteProductB();
}
}
抽象工厂模式指的是将工厂类和产品类分别抽象出来,使得一个工厂可以生产多种产品。这种方法适用于需要生产一系列相互依赖或相互配合的产品的情况。
public interface AbstractFactory {
Product1 createProduct1();
Product2 createProduct2();
}
public class ConcreteFactory1 implements AbstractFactory {
public Product1 createProduct1() {
return new ConcreteProduct1A();
}
public Product2 createProduct2() {
return new ConcreteProduct2A();
}
}
public class ConcreteFactory2 implements AbstractFactory {
public Product1 createProduct1() {
return new ConcreteProduct1B();
}
public Product2 createProduct2() {
return new ConcreteProduct2B();
}
}
以上是工厂模式的三种常用实现方法,可以根据具体情况选择适合自己的方式。需要注意,在实际应用中,我们需要根据需求和业务场景来选择不同的工厂模式,以达到最佳的效果。
四、总结
本文介绍了工厂模式的概念、优缺点以及实现方法,希望能够对读者对设计模式的理解和应用有所帮助。