工厂方法模式是设计模式中的一种创建型模式,它主要解决的问题是对象创建的问题。它定义了一个创建对象的接口,但让实现这个接口的类来决定实例化哪一个类。工厂方法让类的实例化推迟到子类中进行。
在工厂方法模式中,我们不再使用单个类来创建所有类型的对象,而是创建一个接口或者抽象类来指定生成对象的方法,然后让子类决定要实例化的类。工厂方法模式允许一个类在不改变其代码的情况下更换对象的类型。
假设我们有一个Product
接口和它的一些实现类,我们想要根据不同的条件创建不同的Product
实例。我们可以创建一个Factory
接口和一些实现了这个接口的具体工厂类来实现这一点。
首先是Product
接口及其实现类:
java复制代码
public interface Product {
void use();
}
public class ConcreteProductA implements Product {
@Override
public void use() {
System.out.println("Using ConcreteProductA");
}
}
public class ConcreteProductB implements Product {
@Override
public void use() {
System.out.println("Using ConcreteProductB");
}
}
然后是Factory
接口及其具体实现:
java复制代码
public interface Factory {
Product createProduct();
}
public class ConcreteFactoryA implements Factory {
@Override
public Product createProduct() {
return new ConcreteProductA();
}
}
public class ConcreteFactoryB implements Factory {
@Override
public Product createProduct() {
return new ConcreteProductB();
}
}
使用:
java复制代码
public class FactoryMethodDemo {
public static void main(String[] args) {
Factory factoryA = new ConcreteFactoryA();
Product productA = factoryA.createProduct();
productA.use();
Factory factoryB = new ConcreteFactoryB();
Product productB = factoryB.createProduct();
productB.use();
}
}
这个例子展示了工厂方法模式如何在不直接实例化对象的情况下,通过使用工厂来创建不同的Product
对象。这种方式使得添加新产品类时,只需添加相应的工厂类即可,无需修改现有代码,符合开闭原则。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。