以前写代码老觉得,搞那么多乱七八槽的设计模式干嘛啊,这不是自己找罪受嘛。现在在这次的API开发过程中才晓得设计模式的厉害,真的是境界不到,永远不能领悟呀。还好坚持编码这么久,终于进入设计模式的运用了,算是一个进步。OK,废话不多说了,进入今天的主题,PHP(面向对象)的基础模式有三:工厂模式、单例模式、注册模式。今天想诉说工厂模式。

工厂模式的作用:不知道为什么用,就像一个人深藏千万两万金,却不知道黄金可以让他富可敌国一样。工厂模式,顾名思义就是一个工厂,这个工厂是生产类对象这个产品的。以前程序员需要对象时,都是new一个嘛,现在科技发达了,需要对象,咱们工厂去造一个嘛。以前new不是好好的吗?干嘛要去工厂,直接自己手工生产多方便,哪儿需要哪儿new,通过工厂还要经过一次中介,好麻烦。对,就是这个看似麻烦的过程就是它的作用,想一想,如果你有一个类,在你的项目中有50+个地方需要使用,OK,你就需要new50次,是的,有童靴会说,你用工厂方法还是要调用50次啊,没错,但是现在想一想,我这个类,构造方法变换了,需要多初始化一个参数,或者少初始化一个参数,如果你是直接new的,恭喜你,你就要改50+次,而我,只需要改改这个工厂的生产过程,也就是只修改一个地方

现在明白了,这就是为什么有的人加班到苦逼,还是一个月只有四五千,有的人活的潇潇洒洒,月薪上万,革命尚未成功,咱们一起努力吧。

工厂模式简单代码:

需要被工厂生产的类:

  1. class Database {
  2. public function where($str){
  3. echo $str.'<br />';
  4. return $this;
  5. }
  6. }

工厂类:

  1. class Factory {
  2. public static function createInstance(){
  3. $instance = new Database();
  4. return $instance;
  5. }
  6. }
 

外部调用:

    1. $db = Factory::createInstance();
    2. $db->where('where')->order('order');

PHP的设计模式之工厂模式的更多相关文章

  1. 设计模式——抽象工厂模式及java实现

    设计模式--抽象工厂模式及java实现 设计模式在大型软件工程中很重要,软件工程中采用了优秀的设计模式有利于代码维护,方便日后更改和添加功能. 设计模式有很多,而且也随着时间在不断增多,其中最著名的是 ...

  2. 5. 星际争霸之php设计模式--抽象工厂模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  3. 3. 星际争霸之php设计模式--简单工厂模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  4. iOS 设计模式之工厂模式

    iOS 设计模式之工厂模式 分类: 设计模式2014-02-10 18:05 11020人阅读 评论(2) 收藏 举报 ios设计模式 工厂模式我的理解是:他就是为了创建对象的 创建对象的时候,我们一 ...

  5. 设计模式之工厂模式(Factory)

    设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式 简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类 代码如下: #include <stdio.h> ...

  6. php设计模式:工厂模式

    php设计模式:工厂模式 意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类. 工厂模式实现: 工厂模式中任何创建对象的工厂类都要实现这个接口,实现接口的方法体中都要实现接口中的方法,它声明 ...

  7. 浅析JAVA设计模式之工厂模式(一)

    1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...

  8. java 设计模式之工厂模式与反射的结合

    工厂模式: /**  * @author Rollen-Holt 设计模式之 工厂模式  */   interface fruit{     public abstract void eat(); } ...

  9. C#学习之设计模式:工厂模式

    最近研究一下设计模式中工厂模式的应用,在此记录如下: 什么是工厂模式? 工厂模式属于设计模式中的创造型设计模式的一种.它的主要作用是协助我们创建对象,为创建对象提供最佳的方式.减少代码中的耦合程度,方 ...

  10. [JS设计模式]:工厂模式(3)

    简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料 ...

随机推荐

  1. Linux sudo用法与配置

    Linux环境:CentOS 6.7 结构说明 可以通过编辑文件/etc/sudoers来配置,通常使用visudo命令来进行修改,因为如果你修改的格式不符合它会进行提示.接下来就通过一个格式来了解它 ...

  2. Shell教程 之变量

    1.Shell变量 1.1 定义变量 your_name="http://www.cnblogs.com/uniquefu" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有 ...

  3. echarts中间有字饼图Demo2

    echarts链接:http://gallery.echartsjs.com/editor.html?c=xHy2vIPzLQ 完整代码: option = { backgroundColor: 'b ...

  4. HTML5拖拽事件笔记

    在HTML5的规范中,我们可以通过为元素增加`draggable="true"`来设置此元素是否可以进行拖拽操作,其中图片.链接默认是开启的. 1. 拖拽元素:设置了`dragga ...

  5. android轮播图的实现原理

    1.轮播图的点:RadioGroup,根据网络请求的数据,解析得到的图片的个数,设置RadioGroup的RadioButton的个数. 2.轮播图的核心技术:用Gallery来存放图片,设置适配器. ...

  6. css兼容性写法大全

    淘宝初始化代码 body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset ...

  7. eclipse 安装python后pydev不出现

    一.环境 windows 7 64bit eclipse 4.5.2 pydev jdk7u55 二.安装步骤 1. 安装JDK eclipse依赖于java环境,所以需要安装java运行环境JRE. ...

  8. mysql中各种join连表查询总结

    通常我们需要连接多个表查询数据,以获取想要的结果. 一.连接可以分为三类: (1) 内连接:join,inner join (2) 外连接:left join,left outer join,righ ...

  9. 由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载,但是ajax实现的文件下载并不能触发浏览器的下载文件弹出框,这里通过模拟表单提交实现同样的效果。

    由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载(这样的话ajax可以传递不同的参数),但是ajax实现的文 ...

  10. C# Convert.ToInt32和int.Parse转换null和空字符串时的不同表现

    Convert.ToInt32最终调用的函数见下图: int.Parse调用的函数见下图: 具体的见https://www.cnblogs.com/leolis/p/3968943.html的博客,说 ...