定义
工厂方法模式
定义一个工厂的接口,但由子类决定实例化哪一个类,使得一个类的实例化延迟到子类。
一个抽象工厂,多个具体工厂,一个抽象产品,多个具体产品。
实现
public interface Product {
}
public class ProductA implements Product {
}
public class ProductB implements Product {
}
public interface Factory{
Product createProduct();
}
public class ProductAFactory implements Factory{
public Product createProduct(){
return new ProductA();
}
}
public class ProductBFactory implements Factory{
public Product createProduct(){
return new ProductB();
}
}优点:
- 封装:将创建对象的过程封装起来,调用方不需要关心对象创建的过程。
- 解耦:调用者只需要使用实例而不需要创建实例。
- 遵循开闭原则:无需修改现有客户端代码,就可以引入新的产品类型。
缺点: - 类的数量过多:每增加一个产品就要编写一个具体工厂类,导致类的数量翻倍。