php设计模式(2)工厂模式概述

2017-03-05 02:04:48 admin ...

前言:

工厂模式是php设计模式中最常见的一种设计模式,工厂模式可以分为简单工厂模式,工厂方法模式和抽象工厂模式,限于篇幅,我们将工厂模式分成四个小节讨论,本节我们总体交流一下工厂模式的问题,后面分三个部分讨论简单工厂、工厂方法和抽象工厂模式。

内容概要:

1、什么是工厂模式
2、为什么使用工厂模式
3、什么情况下使用工厂模式
4、工厂模式的分类

一、什么是工厂模式

工厂模式是属于创建型模式,他是一种创建对象的最佳方式。在工厂模式中,我们在创建对象的时候,不会对调用者显示创建的内部逻辑细节,仅提供一个共同的接口来指向新创建的对象。

说的简单点,就是我们提供一种创建对象的接口,让调用对象的人方便使用,在php中就是,创建对象不使用 new class()这种方法创建对象,而是使用某个封装起来的接口或者方法创建对象。

冰激凌工厂做例子

举个例子,假设有一个生产冰激凌的工厂,工厂目前暂时生产两种类型的冰激凌:苹果味和牛奶味的。假设我们去工厂买冰激凌,并且一次买一个(有点过分,假设哈)。

如果没有工厂模式的情况下,是这样买到牛奶冰激凌的:我们直接走到生产牛奶冰激凌的车间,自己亲手配料制作(自己new冰激凌对象),制作完毕后,到工厂外贪婪的吃了起来……

假设有工厂模式的情况下,你只需要走到工厂门口,告诉门卫:我要牛奶味的冰激凌,门卫打电话给牛奶车间,生产一个牛奶味的冰激凌送过来,你收到门卫递过来的冰激凌,贪婪的吃了起来……

例子有些扯,估计大家也能明白其中的意思。就是调用者不用理解和参与创建对象的工作,直接由门卫(代表工厂)来帮你完成创建工作。

二、为什么使用工厂模式

每个对象统一由工厂来创建,便于管理和拓展,而且也减少了代码的复制粘贴,使得各模块耦合关系弱。同时,调用者不用关心工厂的生产细节,便于团队分工协作。

总结一下为什么使用工厂模式:就是易维护、可扩展、能复用,也就是灵活性好。

扯到冰激凌上,你只管说想吃啥味的冰激凌,拿走吃就是,其他生产过程,卫生许可,配料比例你就别问了,是不是很方便。

三、什么情况下使用工厂模式

工厂模式主要针对对象的多态。上面例子中说了,工厂现在有牛奶和苹果味的冰激凌,但是,不知道哪天增加个葡萄味的,过几天增加个榴莲味的,或者是增加一种卤煮味的(增加记忆用,非本人口味重)。对应工厂来说,只需要创建相应的车间就行了。对调用者来说,调用方式没有变,这就是优势了。

常见的有数据库,注册用户,运行日志等包含多种类型的业务都可以使用工厂模式。

php设计模式(2)工厂模式概述

四、工厂模式的分类

按照创建对象的方式不同可以分为:简单工厂模式、工厂方法模式和抽象工厂模式。在一些PHP框架中,使用工厂方法模式比较多。

好了,本节就聊这些吧,下一节聊每一种工厂模式的具体实现方法。

相似文章