Java-23个设计模式 Factory Method 工厂模式

本文介绍FactoryMethod设计模式的应用,通过抽象工厂方法实现类对象使用者与具体类型的解耦,延迟实例化到子类,遵循依赖倒置原则,适用于需求频繁变化的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Factory Method

延迟类的实例化(支持变化,延迟到子类),解耦(new 后面的具体类)

① 创建基类,定义工厂方法所创建的对象的接口(这里生产电脑系统Linux和Computer)

/**
 * 工厂基类
 */
public abstract class SystemProductFactory {
    // 工厂方法
    abstract ComputerSystem createComputerSystem();
}

② 创建LinuxFactory,生产Linux的工厂

public class LinuxFactory extends SystemProductFactory{
    @Override
    public ComputerSystem createComputerSystem() {
        return new Linux();
    }
}

③ 创建具体类Linux

public class Linux extends ComputerSystem {
    @Override
    void run() {
        System.out.println("Linux");
    }
}

④ 真正实现依赖倒置原则

public class Main {
    private SystemProductFactory systemProductFactory;
    // 构造方法,传入一个工厂对象
    public Main(SystemProductFactory systemProductFactory){
        this.systemProductFactory = systemProductFactory;
    }
    public void run(){
        // 通过多态的形式接收,且通过接口的方式获取工厂,不会造成细节依赖,实现依赖倒置原则
        ComputerSystem system = systemProductFactory.createComputerSystem();
        system.run();
    }
}

⑤ 测试

public static void main(String[] args) {
        SystemProductFactory factory = new LinuxFactory();
        Main main = new Main(factory);
        main.run();
}

注意:Main(我不在乎别人,只在乎自己在编译过程中没有new的依赖。new的依赖不能消除,只能转换)

让Main依赖稳定的,而不是依赖变化的

场景:Factory Method模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系(new)会导致软件的脆弱

优点:通过面向对象的手法(多态),将所要创建的具体对象工作延迟到子类(继承),从而实现一种扩展(而非更改)的策略,较好地解决了这种紧耦合的关系。

缺点:解决 " 单个对象 " 的需求变化。但是在于要求创建方法/参数相同。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值