PHP的设计模式之工厂模式
以前写代码老觉得,搞那么多乱七八槽的设计模式干嘛啊,这不是自己找罪受嘛。现在在这次的API开发过程中才晓得设计模式的厉害,真的是境界不到,永远不能领悟呀。还好坚持编码这么久,终于进入设计模式的运用了,算是一个进步。OK,废话不多说了,进入今天的主题,PHP(面向对象)的基础模式有三:工厂模式、单例模式、注册模式。今天想诉说工厂模式。
工厂模式的作用:不知道为什么用,就像一个人深藏千万两万金,却不知道黄金可以让他富可敌国一样。工厂模式,顾名思义就是一个工厂,这个工厂是生产类对象这个产品的。以前程序员需要对象时,都是new一个嘛,现在科技发达了,需要对象,咱们工厂去造一个嘛。以前new不是好好的吗?干嘛要去工厂,直接自己手工生产多方便,哪儿需要哪儿new,通过工厂还要经过一次中介,好麻烦。对,就是这个看似麻烦的过程就是它的作用,想一想,如果你有一个类,在你的项目中有50+个地方需要使用,OK,你就需要new50次,是的,有童靴会说,你用工厂方法还是要调用50次啊,没错,但是现在想一想,我这个类,构造方法变换了,需要多初始化一个参数,或者少初始化一个参数,如果你是直接new的,恭喜你,你就要改50+次,而我,只需要改改这个工厂的生产过程,也就是只修改一个地方。
现在明白了,这就是为什么有的人加班到苦逼,还是一个月只有四五千,有的人活的潇潇洒洒,月薪上万,革命尚未成功,咱们一起努力吧。
工厂模式简单代码:
需要被工厂生产的类:
- class Database {
- public function where($str){
- echo $str.'<br />';
- return $this;
- }
- }
工厂类:
- class Factory {
- public static function createInstance(){
- $instance = new Database();
- return $instance;
- }
- }
外部调用:
- $db = Factory::createInstance();
- $db->where('where')->order('order');
PHP的设计模式之工厂模式的更多相关文章
- 设计模式——抽象工厂模式及java实现
设计模式--抽象工厂模式及java实现 设计模式在大型软件工程中很重要,软件工程中采用了优秀的设计模式有利于代码维护,方便日后更改和添加功能. 设计模式有很多,而且也随着时间在不断增多,其中最著名的是 ...
- 5. 星际争霸之php设计模式--抽象工厂模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 3. 星际争霸之php设计模式--简单工厂模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- iOS 设计模式之工厂模式
iOS 设计模式之工厂模式 分类: 设计模式2014-02-10 18:05 11020人阅读 评论(2) 收藏 举报 ios设计模式 工厂模式我的理解是:他就是为了创建对象的 创建对象的时候,我们一 ...
- 设计模式之工厂模式(Factory)
设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式 简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类 代码如下: #include <stdio.h> ...
- php设计模式:工厂模式
php设计模式:工厂模式 意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类. 工厂模式实现: 工厂模式中任何创建对象的工厂类都要实现这个接口,实现接口的方法体中都要实现接口中的方法,它声明 ...
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
- java 设计模式之工厂模式与反射的结合
工厂模式: /** * @author Rollen-Holt 设计模式之 工厂模式 */ interface fruit{ public abstract void eat(); } ...
- C#学习之设计模式:工厂模式
最近研究一下设计模式中工厂模式的应用,在此记录如下: 什么是工厂模式? 工厂模式属于设计模式中的创造型设计模式的一种.它的主要作用是协助我们创建对象,为创建对象提供最佳的方式.减少代码中的耦合程度,方 ...
- [JS设计模式]:工厂模式(3)
简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料 ...
随机推荐
- 发送邮件【文本-html】【图片】【邮件】【附件】
依赖 <!-- https://mvnrepository.com/artifact/javax.mail/mail --> <dependency> <groupId& ...
- Win7系统不能记忆窗口大小与位置解决方法
似在某此系统优化后,无意发现系统在注销或重启后,打开资源管理器,它以默认大小及位置显示. 对于习惯自定义操作来说,甚为不便,遍找方法未有奏效者,但总萦绕心头,时时记起. 今日再找问题解决方法,难兄难弟 ...
- Redis能干啥?细看11种Web应用场景[转]
下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率. 1.在主页中显示最新的项目列表. Redis使用的是常驻内存的缓存,速度非常快.LPUSH用来插入一个内容ID ...
- django的request介绍和APIView流程分析和CBV的流程分析
首先get请求的数据都在request.GET中,request.body中没有,因为只有post请求有请求体,request.body中的数据是请求体的数据 首先,我们还是用cbv的方式来讲解 我们 ...
- @params、@PathVariabl和@RequestParam用法与区别
[1]params params: 指定request中必须包含某些参数值是,才让该方法处理. @RequestMapping(value = "testParamsAndHeaders&q ...
- Ado.net简单快捷帮助类
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; usin ...
- vue-form表单验证插件
参考地址:https://segmentfault.com/q/1010000003988864 github地址:https://github.com/fergaldoyle/vue-form 安装 ...
- Lucene/Solr企业级搜索学习资源
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http GSol ...
- 在电脑上查看小米手机连接wifi时保存的密码
手机连接的wifi,想另一个手机也连上,密码忘了. 先备份手机的资料,然后将手机连上电脑,在SD卡上MIUI-backup-allbackup文件夹中, 找到刚才备份的文件夹 点进去找到WLAN设置. ...
- hdu 5441 Travel (2015长春网赛)
http://acm.hdu.edu.cn/showproblem.php?pid=5441 题目大意是给一个n个城市(点)m条路线(边)的双向的路线图,每条路线有时间值(带权图),然后q个询问,每个 ...