设计模式:工厂模式解决创建逻辑复杂问题

本文介绍了如何使用工厂模式解决创建逻辑复杂问题,通过案例分析了创建对象的场景,详细讲解了简单工厂、工厂方法和抽象工厂模式的定义、作用及实现,强调了工厂模式在封装对象创建过程中的重要性,适用于需要根据条件创建不同对象的情况。
摘要由CSDN通过智能技术生成

一、创建对象案例

在下面代码中,根据配置文件的后缀(json、xml、yaml、properties),选择不同的解析器(JsonRuleConfigParser、XmlRuleConfigParser……),将存储在文件中的配置解析成内存对象RuleConfig。

public class RuleConfigSource {
   
    public RuleConfig load(String ruleConfigFilePath) {
   
        String ruleConfigFileExtension = getFileExtension(ruleConfigFilePath);
        IRuleConfigParser parser = null;
        if ("json".equalsIgnoreCase(ruleConfigFileExtension)) {
   
            parser = new JsonRuleConfigParser();
        } else if ("xml".equalsIgnoreCase(ruleConfigFileExtension)) {
   
            parser = new XmlRuleConfigParser();
        } else if ("yaml".equalsIgnoreCase(ruleConfigFileExtension)) {
   
            parser = new YamlRuleConfigParser();
        } else if ("properties".equalsIgnoreCase(ruleConfigFileExtension)) {
   
            parser = new PropertiesRuleConfigParser();
        } else {
   
            throw new InvalidRuleConfigException(
                    "Rule config file format is not supported: " + ruleConfigFilePath);
        }

        String configText = "";
        //从ruleConfigFilePath文件中读取配置文本到configText中
        RuleConfig ruleConfig = parser.parse(configText);
        return ruleConfig;
    }

    private String getFileExtension(String filePath) {
   
        //...解析文件名获取扩展名,比如rule.json,返回json
        return "json";
    }
}

二、创建对象案例分析

在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会用到工厂模式。

工厂模式定义:

封装对象的创建过程,将对象的创建和使用相分离。

工厂模式的作用:

(1) 控制复杂性(原本类):将创建代码抽离出来,让原本的函数或者类职责更单一,代码更简洁

(2) 代码复用(工厂类):创建代码抽离到独立的工厂类之后就可以复用

(3) 隔离复杂性(调用者):封装复杂的创建逻辑,调用者无需了解如何创建对象

(4) 封装变化(调用者):创建逻辑有可能变化,封装成工厂类之后,创建逻辑的变更对调用者更透明

比如开篇案例中,不同解析器的创建就可以使用工程模式。

三、简单工厂模式

1、定义:

定义一个创建对象的类,封装创建对象的行为。

2、案例:

开篇案例使用简单工厂模式的代码实现方式如下:

public class RuleConfigSource {
   
    public RuleConfig load
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值