问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

使用简单工厂模式的优点是什么?

发布网友 发布时间:2022-04-06 02:14

我来回答

6个回答

懂视网 时间:2022-04-06 06:35

?

在上文中解析了配置文件的加载流程,在对不同类型的文件加载没有去做过多的解释,接下里就针对下面问题进行简单的说明。

?

在之前看到的loadFile方法中,文件类型为PHP或者yaml程序就打断了,就不会在去执行后边的pares方法。

那么这个parse方法是做什么的呢!

在这里插入图片描述进入到paras这个方法后,首先看注释

随后使用了一个工厂模式去加载think/config/driver下的文件

在这里插入图片描述进入到factory这个方法后,这块内容属于容器的就不过多解释了。

只需要知道这里最终会返回一个实例给paras方法的$object变量

在这里插入图片描述最终还是使用在上文中提到的set方法,而内部的object->parse()就是执行返回对象的内部方法,例如下图展示三个类型。ini、json、xm三个类型都存在同样的方法

在这里插入图片描述这是ini类型,其它俩个的类型也是一毛一样的,就是会有同样的方法来实现对应的功能

在这里插入图片描述「简单梳理一下工厂模式加载不同类型的配置」

  • 把对应的类型传给一个方法
  • 然后这个方法返回对应的实例
  • 在用这个实例去调用类里边的方法
  • 所有实例里的方法名都是一致的
  • 这里咔咔后期会单独出一篇文章模仿这个实现另一个功能,导图会有所有的文章链接哦!

    在ini.php中看到了一个方法parse_ini_file,其实这个方法根据之前的学习就大概能了解到时把ini类型的配置文件转为数组形式。这里就不做演示了,很是简单哈!

    那么其它俩种类型都是为了把文件数据转为数组的。

    ?

    坚持学习、坚持写博、坚持分享是咔咔从业以来一直所秉持的信念。希望在偌大互联网中咔咔的文章能带给你一丝丝帮助。我是咔咔,下期见。

    ?

    热心网友 时间:2022-04-06 03:43

    简单工厂模式的优点:

    1、工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品;

    2、简单工厂模式通过这种做法实现了对责任的分割,它提供了专门的工厂类用于创建对象。

    3、客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。

    4、通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。

    扩展资料:

    简单工厂模式的缺点:

    1、由于工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。

    2、使用简单工厂模式将会增加系统中类的个数,在一定程序上增加了系统的复杂度和理解难度。

    3、系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。

    4、简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。

    参考资料来源:百度百科-简单工厂模式

    热心网友 时间:2022-04-06 05:01

    工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A(). 工厂模式也是用来创建实例对象的,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

    类Sample为例,要创建Sample的实例对象:

    Sample sample=new Sample();
    可是,实际情况是,通常我们都要在创建sample实例时做点初始化的工作,比如赋值 查询数据库等

    首先,我们想到的是,可以使用Sample的构造函数,这样生成实例就写成:

    Sample sample=new Sample(参数);

    但是,如果创建sample实例时所做的初始化工作不是象赋值这样简单的事,可能是很长一段代码,如果也写入构造函数中,那你的代码很难看了

    初始化工作如果是很长一段代码,说明要做的工作很多,将很多工作装入一个方法中,相当于将很多鸡蛋放在一个篮子里,是很危险的,这也是有背于Java面向对象的原则,面向对象的封装(Encapsulation)和分派(Delegation)告诉我们,尽量将长的代码分派“切割”成每段,将每段再“封装”起来(减少段和段之间偶合联系性),这样,就会将风险分散,以后如果需要修改,只要更改每段,不会再发生牵一动百的事情。

    我们需要将创建实例的工作与使用实例的工作分开, 也就是说,让创建实例所需要的大量初始化工作从Sample的构造函数中分离出去。

    你想如果有多个类似的类,我们就需要实例化出来多个类。这样代码管理起来就太复杂了。
    这个时候你就可以采用工厂方法来封装这个问题。
    不能再用上面简单new Sample(参数)。还有,如果Sample有个继承如MySample, 按照面向接口编程,我们需要将Sample抽象成一个接口.现在Sample是接口,有两个子类MySample 和HisSample

    Sample mysample=new MySample();
    Sample hissample=new HisSample();
    采用工厂封装:

    public class Factory{

    public static Sample creator(int which){

    //getClass 产生Sample 一般可使用动态类装载装入类。
    if (which==1)
    return new SampleA();
    else if (which==2)
    return new SampleB();

    }

    }

    那么在你的程序中,如果要实例化Sample时.就使用

    Sample sampleA=Factory.creator(1);

    举个更实际的例子,比如你写了个应用,里面用到了数据库的封装,你的应用可以今后需要在不同的数据库环境下运行,可能是oracle,db2,sql server等,那么连接数据库的代码是不一样的,你用传统的方法,就不得不进行代码修改来适应不同的环境,非常麻烦,但是如果你采用工厂类的话,将各种可能的数据库连接全部实现在工厂类里面,通过你配置文件的修改来达到连接的是不同的数据库,那么你今后做迁移的时候代码就不用进行修改了。

    我通常都是用xml的配置文件配置许多类型的数据库连接,非常的方便。PS:工厂模式在这方面的使用较多。

    热心网友 时间:2022-04-06 06:36

    防止对数据的破坏,实现多态。

    热心网友 时间:2022-04-06 08:27

    可以动态创建对象~~
    简单工厂就是生产对象的工厂

    热心网友 时间:2022-04-06 10:35

    封装
    工厂模式的好处 简单工厂模式的优点

    简单工厂模式的优点主要体现在以下几个方面:1. 封装性:简单工厂模式封装了对象的创建过程,使得客户端代码不再需要关心对象的创建细节,从而降低了客户端代码的复杂性。客户端只需要调用工厂方法,并传入必要的参数,就可以获得所需的对象实例。2. 解耦:简单工厂模式将对象的创建与使用相分离,这意味着...

    智能运维AIOps是什么?企业为什么要用它?

    智能运维,又称AIOps(Artficial Intelligence for Operations),是一种将大数据、人工智能或机器学习技术赋能传统IT运维管理的平台(技术)。2016年由Gartner正式提出,被喻为传统手工运维ITOM(IT Operations Management)和ITOA(IT Operati...

    使用简单工厂模式的优点是什么?

    简单工厂模式的优点:1、工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品;2、简单工厂模式通过这种做法实现了对责任的分割,它提供了专门的工厂类用于创建对象。3、客户端无须知道所创建的具体产品类的类名,只需要知道具...

    简单工厂模式优缺点

    这种模式的优势在于,它将对象的创建逻辑封装在工厂类中,使得客户端只需关注“消费”对象,而不必关心其实现细节,从而提升了代码的可维护性和软件体系结构的优化。各个组件之间的职责明确,有助于保持系统的清晰度。然而,简单工厂模式也存在一些缺点。首先,工厂类集中了所有实例的创建逻辑,这可能违反了...

    简单工厂模式的优缺点

    优点工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的...

    简单工厂模式是什么?

    简单工厂模式具有以下几个显著特点:1. 易于理解:由于其结构简单明了,学习和实现起来相对容易。2. 解耦合:通过工厂类统一创建对象,使得客户端与具体对象的创建逻辑解耦。3. 维护性高:如果对象的创建逻辑需要修改,只需修改工厂类,客户端代码无需变动。三、工作原理 简单工厂模式中,存在一个专门用于...

    Golang 设计模式之工厂模式

    简单工厂模式在创建对象时,虽然直观易懂,但不支持类的扩展。其优点是代码简洁,劣势是扩展性差。例如,若要添加新类型的水果,需修改工厂类。而工厂方法模式解决了这一问题,通过抽象工厂接口和具体工厂类分离,扩展新水果类时仅需新增实现类,保持原有代码不变。抽象工厂模式进一步将组件拆分为产品族和...

    软件架构师必学技术,24种设计模式与7大原则

    优点方面:简单工厂模式:通过工厂类集中控制产品创建逻辑,使客户端无需直接创建产品对象,降低偶合性,优化软件体系结构。工厂方法模式:工厂类只负责创建单一产品,简洁易维护,完全满足开闭原则,支持产品扩展。抽象工厂模式:将产品创建和使用分离,易于交换产品系列,降低模块间耦合性,提高开发效率。缺点...

    深入解析Java工厂模式及其应用场景

    Java工厂模式的实现有三种形式:简单工厂模式,通过单一工厂类创建所有对象,但可能违背开闭原则;工厂方法模式,通过接口和工厂类提供多态性,增加了灵活性;抽象工厂模式则更进一步,创建一组相关对象,适用于多个产品类的组合。工厂模式的优势在于解耦、灵活和易于扩展,便于在不改变使用代码的情况下,添加新...

    为什么要使用工厂模式

    使用工厂模式有一些好处。问题六:有必要所有类都用简单工厂模式创建吗 简单工厂模式一般用在继承类比较多的情况下,只要声明其父类,子类通过工厂就可以创建出来 而客户端就不用关心具体子类怎么实现了 如果你的子唬就一两个,那就没这个必要 好几种设计模式都是相互矛盾的,要看适用的环境 刚开始学...

    工厂模式有哪些

    简单工厂模式:简单工厂模式的核心思想是由一个专门的类来创建其他类的实例,这个专门的类就称为工厂类。它通常根据某个条件决定创建哪个类的实例。这种模式的优点是简单直接,适用于产品种类较少的情况。但随着产品种类的增加,工厂类可能会变得过于庞大和复杂。工厂方法模式:工厂方法模式是对简单工厂模式...

    简单工厂模式和工厂模式区别 什么是简单工厂模式 简单工厂模式优缺点 工厂模式的优点 工厂模式有什么用 为什么要用工厂模式 抽象工厂和建造者模式各自的优点 使用工厂模式最主要的好处 工厂模式是什么意思
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    关于新农保,希望得到详细答案,很着急 应届毕业生毕业后找不到工作,听说去区里面办个失业证的东西,有关机关能... 我是农村的,谁知道新农保最高年缴保额是多少,我今年45岁,15年后我每 ... PSP NGP的各个方面问题 ngp怎么跟之前爆料出来的那个滑盖的psp2差别这么大啊? NGP(psp2)问题~ ...学来给人算命 有人说是本教人骗人的书 忘了是什么名字 命理英耀篇原文及翻译 ...六年级的姐姐都骂我,我害怕发生校园暴力,怎么办!急!! 两个微信号能同步接收消息吗? 手机开不开机,无法进入工厂模式怎么办 ASP.NET工厂模式的疑问 JAVA工厂模式修改其配置文件,而不需要修改代码即可连接不同的数据库,请问有案例吗? intellij yaml文件没有 如何查看创建pod的yaml文件 求c++解析yaml的学习资料 yaml使用需要什么python库 yaml格式有严格的的格式要求,在变量值和难搞之间有两个空格吗 微信怎么打开yaml文件 yaml是什么简写的? yaml是什么意思 python装pyyaml出错,求大神解读一下 phpsso是什么 php如何实现web系统单点登录 php里单点登录的原理是什么?就是类似dedecms+discuz整合的那种 linux中php如何安装CURL扩展方法 linux php的mogobd扩展怎么装 linux系统下如何安装oci8的php扩展? 如何在linux下安装phalcon框架php版本的扩展 linux下怎么安装php的redis扩展 我想知道工厂模式的详细解释 求:asp.net 工厂模式类间引用顺序 安卓手机开机后,总是显示 工厂模式(factory mode),无法进入正常手机界 使用工厂模式对于设计软件有什么好处? 工厂模式为什么叫做工厂模式? java 抽象工厂模式 工厂模式的应用? 蘑菇车机开机为什么开机就出现发现工厂配置文件,请问是否导入 c#中的工厂模式的好处 我感觉java中的"工厂模式"和MVC框架中的"Spring"设计原理很相似,不知道到底这么认为对不对?求助大神 thinkphp3.2 载入配置文件 THINKPHP咋样生成文件,例如后台功能要生成配置文件等 thinkphp数据库怎么配置 ThinkPHP2.1核心包中配置文件convention.php 不起作用是怎么回事啊? thinkphp3.2.2怎么配置 thinkphp取出数组中的值 THINKPHP模板中如何判断一个数存在于一个数组中 ThinkPHP中返回一个数组该怎么使用? ThinkPHP中foreach和volist的区别 thinkphp如何查询某一条数据在所有查询到的数据中的排名位置? thinkphp 中数据库的值怎么读到checkbox