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

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

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)会导致软件的脆弱

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

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

基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值