首页
学习
活动
专区
工具
TVP
发布

php 工厂模式

一、 什么是工厂模式   工厂类调用自身静态方法来生产对象实例   工厂类:负责生成其他对象的类或方法   途径:调用自身静态方法   结果:一个实例对象   工厂模式有一个关键的构造,根据一般原则命名为...Factory的静态方法,然而这只是一种原则,虽然工厂方法可以任意命名这个静态还可以接受任意数据的参数,必须返回一个对象。...二、 为什么需要工厂模式 工厂模式可以将对象的生产从直接new 一个对象,改成通过调用一个工厂方法生产。这样的封装,代码若需修改new的对象时,不需修改多处new语句,只需更改生产对象方法。...若所需实例化的对象可选择来自不同的类,可省略if-else多层判断,给工厂方法传入对应的参数,利用多态性,实例化对应的类。...优点:增加代码的可拓展性,减少业务的耦合性,减少代码量 三、 代码实现 工厂类通过不同的参数 返回对应的业务处理类: 工程业务接口类 统一定义业务接口: 工厂调用类 继承工厂类 接收类型参数 实例化对应工厂对象

12830
您找到你想要的搜索结果了吗?
是的
没有找到

php工厂模式和抽象工厂

最近在看工厂模式和抽象工厂模式,把深入php那本书的这一块看了两遍,可还是迷迷糊糊的,于是去问了度娘,我觉得有篇博文里这么说的很有道理: 工厂方法 工厂方法是针对每一种产品提供一个工厂类。...通过不同的工厂实例来创建不同的产品实例。 在同一等级结构中,支持增加任意产品。 抽象工厂 抽象工厂是应对产品族概念的。...具体见博文 简而言之,工厂方法是生产同一等级的不同产品,而抽象工厂是生产不同的产品族,而往往抽象工厂中会用到工厂方法。 ---- 首先介绍一下工厂方法吧。...(在我看来这里面的格式就相当于工厂模式中的产品啦) 在接口级别上我们可以定义出两个类。...但是有没有发现这种模式形成了一种特殊的代码重复,而且可能会导致不必要的实例化,所以使用的时候要考虑清楚再使用工厂模式 下面介绍一下抽象工厂, 上面说过工厂模式是用来生产不同产品的而抽象工厂是用来生成不同产品族

12230

PHP工厂模式和抽象工厂模式

PHP工厂模式: php设计模式笔记,第二个是工厂模式。工厂,我们就可以联想到是一座房子,里面有N多车间,生产着不同系列的产品。...php里面的工厂模式,也类似,由一个类,看作是工厂,在类里面构造一个对外方法接口,返回不同类型的类实例。 工厂模式的好处:在复杂情况中,可以非常方便扩展类。...代码演示,有日志输出,方便你理解工厂模式的机制: /** * PHP设计模式 之 工厂模式 */ interface IEat{ public function showFoot(); }...抽象工厂模式: php设计模式笔记,第三个是抽象工厂模式。...代码演示,实现抽象工厂模式: /** * PHP设计模式 之 抽象工厂模式 * */ interface IAbsFactory { public function showLastNewMobile

24720

工厂模式-Php

工厂模式分为三类: 简单工厂模式(Simple Factory)说明:简单工厂模式属于创建型模式又叫做静态工厂方法模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。...(Factory Method)说明:工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic...在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。...抽象工厂模式(Abstract Factory)说明:抽象工厂模式是一种创建型模式,它提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。...> 简单工厂其实不是一个标准的的设计模式。GOF 23种设计模式中只有「工厂方法模式」与「抽象工厂模式」。简单工厂模式可以看为工厂方法模式的一种特例,为了统一整理学习,就都归为工厂模式。

32740

php 抽象工厂模式

/* 抽象工厂模式:用来生成一组相关或相互依赖的对象。 抽象工厂模式与工厂方法模式的区别: 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。...他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构; 而抽象工厂模式则是针对的多个产品等级结构。...在编程中,通常一个产品结构,表现为一个接口或者抽象类, 也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类, 而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。...在抽象工厂模式中, 有一个产品族的概念:所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族。...抽象工厂模式所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品称为一个等级结构。 我们依然拿生产汽车的例子来说明他们之间的区别。

17420

PHP设计模式——工厂方法

用了简单工厂(Simple Factory)的设计模式,开发人员现在可以在Dragon公司中享受他们的一天。尽管对玩具进行了详尽的讨论,但我们还没有真正研究过玩具类。...首席执行官高兴地宣布,Dragon Inc.将在美国开设几家工厂。 他们将位于不同的州,前两个工厂将在纽约和加利福尼亚。...简单工厂(SimpleFactory)模式简化了任务,使开发人员的工作变得容易。...两周后,由于纽约工厂出现生产问题,电话开始在开发人员办公室响起。 事实证明,NyToysFactory类已由远程分支的开发人员修改,因为那里的员工不想执行包装和标签工作。...在这种情况下,简单工厂(SimpleFactory)模式似乎无法正常工作。 我们不希望美国的分支机构能够修改produceToy()函数。

33710

php 开发模式之工厂模式

php // 开发模式之工程模式 // 工厂模式: // 由工厂类根据参数来决定创建出哪一种产品类的实例; // 工厂类是指包含了一个专门用来创建其他对象的方法的类。...php //定义一个抽象类 abstract class operation { protected $_numA = 0; protected $_numB = 0; protected...明白了等级结构和产品族的概念,就理解工厂方法模式和抽象工厂模式的区别了,如果工厂的产品全部属于同一个等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式。...总结 无论是简单工厂模式,工厂方法模式,还是抽象工厂模式,他们都属于工厂模式,在形式和特点上也是极为相似的,他们的最终目的都是为了解耦。...php /** * 抽象工厂模式 * ------------- * @author zhaoxuejie * @package design

18710

PHP设计模式之简单工厂工厂模式实例分析

本文实例讲述了PHP设计模式之简单工厂工厂模式。...分享给大家供大家参考,具体如下: 工厂模式是创建型模式的一种,分为简单工厂模式,工厂模式,抽象工厂模式,简单工厂可以称之为工厂模式的一个特例 先用一段简单的代码说明一下,现在假设我们是顾客,需要苹果味饮料和香蕉味饮料...php class AppleDrink{ function getDrinkName() { echo '苹果饮料'; } } class BananaDrink{ function...所以,在使用工厂模式时,只需要关心降低耦合度的目的是否达到了 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程...》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。

28530

工厂模式进阶之Android中工厂模式源码分析

Android工厂模式源码分析 本文对Android源码中所涉及到的工厂模式进行分析(源码不会涉及的具体的细节,具体细节读者请另查相关阅资料),最后再给出安卓中对工厂模式的应用场景案例。...工厂模式总共三种:简单工厂工厂方法、抽象工厂。...Bitmap对象,符合简单工厂(静态工厂)模式的结构。...3、抽象工厂模式在安卓中的使用: 在源码中, 比较典型的抽象工厂模式的例子是java.sql包中的Connection类,在刚学习Java时我们都会学习使用JDBC链接数据库,代码大致是这样的: 上面我们是以...UML如下: 整体的代码就不贴上了,其中抽象工厂和具体工厂是抽象工厂模式的核心,代码如下: IOFactory抽象工厂角色: IOHandlerFactory具体工厂角色(用于创建不同的数据存储方案实例

99390

PHP设计模式之抽象工厂模式

PHP设计模式之抽象工厂模式 工厂模式系列中的重头戏来了,没错,那正是传闻中的抽象工厂模式。初次听到这个名字的时候你有什么感觉?反正我是感觉这货应该是非常高大上的,毕竟包含着“抽象”两个字。...PHP_EOL; } } // 商品A2实现 class ProductA2 implements AbstractProductA { public function show():...PHP_EOL; } } // 商品B抽象接口 interface AbstractProductB { public function show(): void; } // 商品B1...PHP_EOL; } } 商品的实现,东西很多吧,这回其实是有四件商品了分别是A1、A2、B1和B2,他们之间假设有这样的关系,A1和B1是同类相关的商品,B1和B2是同类相关的商品 // 抽象工厂接口...; 完整源码:短信发送工厂方法 说明 是不是很清晰了?

83720
领券