对象工厂PHP,php – 有一个工厂用于创建对象的好处?
我认为这与构建某些类型的对象所需的资源有关.
非正式地说,如果你告诉某人建造一台Mac,这将是一个艰苦的过程,需要多年的设计,开发,制造和测试,而且可能做得不对.每个Mac都必须重复此过程.但是,如果你介绍一个工厂,所有的辛勤工作只能做一次,那么Mac可以更便宜地生产.
现在考虑Joomla的factory.php.据我所知,JFactory的主要目的是汇集对象并确保不会复制应该相同的对象.例如,JFactory :: getUser()将返回对一个且仅一个对象的引用.如果该用户对象中的某些内容发生了变化,它将随处出现.另请注意,JFactory :: getUser()返回引用,而不是新对象.这是你无法用构造函数做的事情.
通常,在构造对象时需要本地上下文,并且该上下文可能会持久存在并可能采用多种形式.例如,可能有一个MySQL数据库保存用户.如果使用构造函数创建User对象,则需要将Database对象传递给构造函数(或者让它依赖于全局变量).如果您决定将应用程序切换到PostgreSQL,则Database对象的语义可能会发生变化,从而导致需要检查构造函数的所有用法.全局变量让我们隐藏这些细节,工厂也是如此.因此,用户工厂会将构造User对象的细节与需要User对象的位置分离.
工厂什么时候有用?构造对象时涉及背景细节.什么时候构造者更好?当全局变量足够时.
对象工厂PHP,php – 有一个工厂用于创建对象的好处?相关推荐
- 021 设计模式之工厂方法模式,抽象工厂模式的区别
简单工厂模式,工厂方法模式和抽象工厂模式的异同 简单工厂模式,工厂方法模式和抽象工厂模式都是属于创建型设计模式,这三种创建型模式都不需要知道具体类.我们掌握一种思想,就是在创建一个对象时,需要把容易发 ...
- 工厂方法模式与抽象工厂模式
本文是转的 一.引子 话说十年前,有一个暴发户,他家有三辆汽车--Benz奔驰.Bmw宝马.Audi奥迪,还雇了司机为他开车.不过,暴发户坐车时总是怪怪的:上Benz车后跟司机说&quo ...
- 工厂三兄弟之抽象工厂模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/9319181 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但 ...
- 23种设计模式之简单工厂模式,工厂方法模式,抽象工厂模式详解
工厂模式详解 1. 简单工厂模式 1.1 需求分析 1.2 使用传统方式实现 1.2.1 类图 1.2.2 代码实现 1.2.2.1 新建pizza抽象类 1.2.2.2 希腊披萨实现类 1.2.2. ...
- 工厂模式 java_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- java web简单工厂模式_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- java工厂方法_Java设计模式之工厂方法模式
2.工厂方法模式 <设计模式之禅>中用神话故事女娲造人来比概述工厂方法模式. 女娲采集黄土捏成人的形状,然后放到八卦炉中烧制,最后放置到大地上生长,工艺过程是没有错的,但是意外随时都会发生 ...
- 简单工厂模式,工厂方法模式,抽象工厂模式总结-java版
文章目录 LOG:更新日志 一.简单工厂模式,工厂方法模式,抽象工厂模式定义 二.三种工厂模式的优缺点以及适用场景 三.名词解释 四.简单工厂模式.工厂方法模式与抽象工厂模式之间的区别 五.抽象工厂模 ...
- JAVA设计模式——工厂模式【简单工厂模式、工厂方法模式、抽象工厂模式】
目录 简单工厂模式 传统方式 简单工厂模式 静态工厂模式 工厂方法模式 抽象工厂模式 工厂模式JDK-Calendar源码分析 工厂模式小结 简单工厂模式 看一个具体的需求 看一个披萨的项目:要便 ...
最新文章
- 【算法导论】【ACM】归并排序总结
- PHP 模拟POST请求
- 1.1 MATLAB数值数据
- 1052 Linked List Sorting (25 分)【难度: 一般 / 知识点: 链表】
- 什么叫光端机?视频光端机的分类具体有哪些?
- DevOps组织如何选取拓扑结构以提升协作效能
- Cartographer+LOAM+ LIO-SAM核心算法与源码剖析(室内+室外)
- Hyperledger Fabric Composer安装blockchain explorer
- mysql存大日志_MySQL三大日志
- Visual Stdio fopen错误
- 卸载Windows下驱动并删除sys文件
- 冒险岛开服服务端教程自己搭建服务器需要那些东西
- 华天OA漏洞复现手册
- C语言踢出字符,《懂球堂》| 大写的C字!如何踢出C罗一样的任意球
- 简明c语言,简明易懂的C语言俄罗斯方块
- 泪目跳槽太不容易,蚂蚁金服三轮面试,四个小时灵魂拷问
- 广电网连接问题密码错误找不到netcfg.hlp
- Microsoft Virtual WiFi Miniport Adapter 使用方法
- 信号灯管理服务器CPU型号,正文-新华三集团-H3C
- linux分配iomem,linux 下__iomem 解析【转】
热门文章
- 如何保证战略落地_战略如何规划落地?值得借鉴
- Java爬虫技术(一)普通网站爬取图片
- python 多继承的实现
- Python中find函数的作用及用法
- Python教程:多维列表(元组)碾成一维形式
- Python操作Oracle数据库:cx_Oracle
- python教程:关于 [lambda x: x*i for i in range(4)] 理解
- Python高手必读,做一个精通规则的玩家
- C语言函数 snprintf()(发送有限字符截断字符串输出到 str 所指向的字符串)(字符串拼接、截断拼接)
- OpenCV:在imshow() 之前使用namedWindow() 的必要性讨论?