深入thinkphp的工厂模式

2019-04-28  本文已影响0人  Stevennnmmm

工厂模式

       这个可能对很多编程小伙伴来说都不了解工厂模式,很多人了解了工厂模式又觉得没必要,本篇文章将会讲解工厂模式的原理,作用,目的。很多面试的人直接认为工厂模式就是实现接口,这种肯定是错误的认知。实现接口属于工厂模式,工厂模式更是一种管理类的实例的方式。

目的:工厂类调用自身静态方法来生产对象实例

1.产品:类的实例

2.原料:子类的名称

2.生产方式:调用工厂类的静态方法

.工厂模式有一个关键的构造,根据一般原则命名为Factory的静态方法,然而这只是一种原则,虽然工厂方法可以任意命名这个静态还可以接受任意数据的参数,必须返回一个对象

一个最基本的工厂模式:

thinkphp的工厂模式:ReflectionClass反射类机制+reflecationMethod反射方法实现工厂模式

    简单一点的概念讲解:将工厂模式类中返回实例化部分用reflecationClass        和 ReflectionMethod代替了。

1.简单举例,我们在引入config文件时候,会判断引入文件的类型,默认支持json,php,ini等多种文件类型,此时就用到了工厂模式的设计理念。


在此处做一些说明讲解一下:

首先传入的也就是工厂类名,和之前举例说明的原料相同。

invokeClass中存在两个逻辑:

1,是通过reflecationMethod反射方法来判断是否存在__make,相当于程序逻辑返回的实例化,在很多核心类库都有存在的这个方法。

2.当要实例化本身的类中并不存在__make方法,就借助reflecationClass方法中的newinstanceArgs去实例化本身

在这个地方我借鉴一下bat的行业大佬一句话,config这里的应用逻辑写的不是恰如其分的,一点设计理念都没表达出来,使用了工厂模式却在工厂之外新开流水线,简直违背了工厂模式设计初衷呀

之前是在csdn上有单独开放的博客:一个很帅的程序员,已经停止更新,后续文章将继续在此处更新,希望广大的同行对文章的错误能给予点评,本套thinkphp深度解剖参照慕课网讲师singwa的课程做出的笔记加上个人的理解上的升华,有兴趣的看客可去慕课网订阅观看。

上一篇下一篇

猜你喜欢

热点阅读