工厂方法模式是一种创建型设计模式,它提供了一种将对象的创建委托给子类的方式,从而使得客户端代码与具体创建类解耦。
下面是一个简单的Java工厂方法模式的示例:
首先,我们定义一个抽象产品类:
public abstract class Product { public abstract void use(); }
然后,我们定义两个具体产品类:
public class ConcreteProductA extends Product { @Override public void use() { System.out.println("使用产品A"); } } public class ConcreteProductB extends Product { @Override public void use() { System.out.println("使用产品B"); } }
接下来,我们定义一个抽象工厂类:
public abstract class Factory { public abstract Product createProduct(); }
然后,我们定义两个具体工厂类,分别用于创建具体产品A和B:
public class ConcreteFactoryA extends Factory { @Override public Product createProduct() { return new ConcreteProductA(); } } public class ConcreteFactoryB extends Factory { @Override public Product createProduct() { return new ConcreteProductB(); } }
最后,我们可以使用工厂方法模式来创建具体产品:
public class Client { 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(); } }
在上面的示例中,我们使用了工厂方法模式来创建具体产品A和B,而客户端代码并不需要知道具体的产品类,只需要知道对应的工厂类即可。这样就实现了客户端代码与具体创建类的解耦。