概念:

       工厂设计模式提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类步骤。 很多高级模式都是依赖于工厂模式。

好处:

        PHP中能够创建基于变量内容的类的新实例,减少主代码流中的基于条件复杂性; 同时如果类发生改变不需要所有的地方进行修改,只需要在工厂中进行修改 (无论对象被修改或者添加其他对象,Factory对象调用方式仍让是相同的)(集中实例化)

应用场景:

      做支付接口的时候,未来可能对应不同的支付网关:支付宝、财付通、网银在线等。方便未来扩展,设计成工厂模式。定一个专门生产网关接口的工厂,抽象出来, 做成接口形式,让所有的子类都要实现它的接口。 以后加一个支付方式,要使用哪一种支付方式,改变一下参数即可。

在为用户注册的时候,分为很多种角色的用户。 比如册用户,匿名用户、管理员用户等。完全使用可以使用工厂的思想来实现, 代码也容易维护,为每种角色可以生成操作的类等等。

系统对接多个不同类型的数据库,mysql,oracle,sqlserver。

实例代码:

     简单工厂模式Factory,提供一个工厂方法供客户端调用。可能违反开闭原则。

     

工厂方法:一个工厂生产多个零件,但零件共同特点是属于一个产品。 此工厂可以生产产品,而非单独的对象。

     

示例三:通过传入不同参数

示例四:通过传入不同参数,动态实例化不同的类。

最新文章

  1. JAVA集合介绍
  2. hibernate4学习
  3. Hadoop 简介
  4. fatal error: 'XCTest/XCTest.h' file not found
  5. Windows下mysql忘记密码的解决方法
  6. 《零成本实现Web自动化测试--基于Selenium》第三章 Selenium-IDE
  7. 关于material和sharedMaterial的问题
  8. uva Fire!
  9. react使用map生成的元素,key的设定不对导致每次删除都删除最后一个
  10. Python函数之简单总结
  11. XUL透明异形旋转窗体
  12. Pycharm常用的使用方法
  13. bzoj2339[HNOI2011]卡农 dp+容斥
  14. python--Numpy and Pandas 基本语法
  15. php json 中文不转义 & 转义为中文
  16. dll导出函数的两种方式的比较
  17. 1.1python解决数学建模之席位分配问题
  18. LeetCode:114_Flatten Binary Tree to Linked List | 将一棵二叉树变成链表的形式 | Medium
  19. permission denied (publickey)问题的解决 和 向github添加ssh key
  20. dubbo2.5.3升级到dobbo2.8.4(dubbox) jar

热门文章

  1. Beta阶段冲刺前准备
  2. js ajax 1
  3. [转帖]go的调度机制.
  4. java 数据结构与算法---树
  5. macOS & SVN
  6. [BZOJ4446]SCoi2015 小凸玩密室 树形DP(烧脑高能预警)
  7. vyatta的fork开源版本vyos
  8. C++ STL 常用遍历算法
  9. BZOJ 4520: [Cqoi2016]K远点对
  10. 51nod 1494 选举拉票 | 线段树