美文网首页PHP经验分享
大话PHP之工厂模式

大话PHP之工厂模式

作者: Stevennnmmm | 来源:发表于2019-04-30 12:00 被阅读1次

我们其实听过很多设计模式,什么单例模式,注册树模式等等。这些语言的设计模式其实是为了一些特定场景而出现的解决方案,所以这就是为什么我们不仅仅要知道设计模式的怎么用,更要知道什么时候用,这个时候概念性的东西理解越透,我们代码层面的深度也就越深。

之前面试过一些phper,有的三四年的经验依旧对设计模式不熟悉。我也喜欢逛程序员的论坛,很多人认为,面试的时候问如何造飞机,实际工作如如何拧螺丝。其实我真的很反感这种说法,知道怎么用和什么时候用一定是存在天壤之别的。其实我们日常工作也是在拧螺丝,但是是否螺丝拧的越紧就越好呢,当然此处只是比喻。我们工作更多的时候是curl,不论缓存也好还是数据库也好还是高级一点的分布式,代码质量对于我们来说就尤为重要了,我见过10来秒的sql,在例会的时候这个人就被炒了,他结果没查对吗,肯定是对的,但是让程序走了许多弯路。总而言之,我见过的大神都是基础特别扎实,对各种设计模式和应用场景都是有相当深入的了解,所以我就出了大话篇,在看过很多文章加上自己的总结后进行的一系列的升华,当然,我的文章也不可避免的存在一些问题,欢迎大家指正,毕竟共同进步才是共赢。

工厂模式的介绍和场景

意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

主要解决:主要解决接口选择的问题。

何时使用:我们明确地计划不同条件下创建不同实例时。

如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。

优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。

缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。

改进:此处可以参考thinkphp框架中config文件引入的代码:使用reflecationClass 和reflecationMethod相关函数对类进行实例化,不用判断类的标识。很大程度解决了工厂模式的缺点。

简单工厂模式/静态工厂模式

简单工厂模式又称静态工厂模式

具体实现:接口层,具体实例层,工厂产出层

通过工厂产出层管理实例层,通过接口层作为管理的统一标准

工厂方法

实现:多实例管理,相比简单工厂模式,更加复杂,但是相对而言解决了简单工厂模式的耦合性高,违反工厂模式封闭原则的问题。

工厂方法最大缺点就是实例太多,加一个产品的流程:加产品实例,加管理实例。

推荐:用简单工厂的改进版

抽象工厂:

意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

主要解决:主要解决接口选择的问题。

何时使用:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。

如何解决:在一个产品族里面,定义多个产品。

关键代码:在一个工厂里聚合多个同类产品。

抽象工厂管理多实例,实际上抽象类使用和注册树模式特别像,但是抽象类不需要提供类的标识,只要知道内部方法就可以调用类的方法

相关文章

  • 大话PHP之工厂模式

    我们其实听过很多设计模式,什么单例模式,注册树模式等等。这些语言的设计模式其实是为了一些特定场景而出现的解决方案,...

  • 大话设计模式之_工厂模式

    大话设计模式之_工厂模式 工程方法(即简单工厂模式simpleFactory,或静态工厂方法 static fac...

  • 代码段简单学习设计模式 -- 抽象工厂模式

    《JAVA与模式》之抽象工厂模式 大话设计模式 抽象工厂模式(Abstraci Factory): 提供一个创...

  • 工厂模式(Factory Pattern)

    大话设计模式之陈狗养猪记_工厂模式 概念: 工厂模式(Factory Pattern)是 Java 中最常用的...

  • 《PHP设计模式大全》系列分享专栏

    php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页 介绍php设计模式中的工厂模式...

  • iOS开发之设计模式 - 工厂模式

    由《大话设计模式 - 工厂模式》的OC和部分Swift的语言转义 工厂模式 继上一篇《代理模式》 工厂模式, 定义...

  • PHP之工厂模式

    工厂方法模式依赖于继承,因为对象创建 委托给 实现工厂方法创建对象 的子类 在上面的URL类图中,Creator ...

  • php 工厂模式

    承接上篇php模式设计之 单例模式,(虽然好像关系不大)。今天讲述第二种基础的模式设计——工厂模式。 那么何为工厂...

  • PHP工厂模式之静态工厂模式

    模式定义 与简单工厂类似,该模式用于创建一组相关或依赖的对象,不同之处在于静态工厂模式使用一个静态方法来创建所有类...

  • PHP工厂模式之抽象工厂模式

    抽象工厂模式中主要角色 抽象工厂(Abstract Factory)角色:它声明一个创建抽象产品对象的接口。通常以...

网友评论

    本文标题:大话PHP之工厂模式

    本文链接:https://www.haomeiwen.com/subject/kcsmnqtx.html