工厂方法模式 (Factory Method Pattern)

模式名称:工厂方法模式(Factory Method Pattern)

问题:简单工厂模式用一个中心工厂类完成对所有产品的获取,如果要新增产品,就要对工厂类的代码直接进行修改,违反了开闭原则,对于坚守面向对象思想的我们是不能接受的。

解决方案:去除中心工厂类,对工厂类做进一步的抽象,定义一个创建对象的接口,每一个对象拥有一个对应的工厂类,让用户自己决定实例化哪一个工厂类。这样可以在不修改原代码的情况下引进新产品,即给新产品创建新的工厂类。工厂方法模式是对简单工厂模式的改进。

效果:工厂方法模式的扩展性更好。

复制代码
public class Main {
    
    public static void main(String[] args){
        FactoryA factoryA = new FactoryA();
        factoryA.getProduct().Show();
 
        FactoryB factoryB = new FactoryB();
        factoryB.getProduct().Show();
    }
}

// 产品类
abstract class Product {
    public abstract void Show();
}
class ProductA extends Product {
    
    @Override
    public void Show() {
        System.out.println("生产出了产品A");
    }
}
class ProductB extends Product {

    @Override
    public void Show() {
        System.out.println("生产出了产品B");
    }
}

// 工厂类
abstract class Factory {
    public abstract Product getProduct();
}
class FactoryA extends Factory {
    
    @Override
    public Product getProduct() {
        return new ProductA();
    }
}
class FactoryB extends Factory {
    
    @Override
    public Product getProduct() {
        return new ProductB();
    }
}
工厂方法模式示例代码
复制代码

 

posted @   HanselHuang  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示