工厂模式分为,简单工厂,工厂方法,抽象工厂

简单工厂:主要特点,在工厂类中做判断,来创造对应的产品。

<?php

/** * 工厂模式,简单工厂模式 * * 主要是在工厂中做判断,从而创造相应的产品 * * 缺点,增加新类型时,需更改工厂类 *      违反了开放封闭原则(软件实体,类,模块,函数)可以扩展 * */define("ONE",1);define("TWO",2);class FactoryOne{    public function create()    {

    }}class FactoryTwo{    public function create()    {

    }}class Factory{    public function __construct()    {

    }

    public function create_instance($type)    {        if($type == ONE){            return new FactoryOne();        }else if($type == TWO){            return new FactoryTwo();        }    }}

工厂方法:主要特点,创建对象的接口,让子类决定实例化哪个类,使一个类的实例化延迟到子类。
<?php

/** * 工厂模式,工厂方法模式 * * 定义一个用于创建对象的接口 * * Factory Method 使一个类的实例化延迟到子类 * * 缺点:没增加一个产品,则需要增加一个工厂 * */abstract class SingleCore{    abstract public function create();

    abstract public function show();}

class SingleA extends SingleCore{    public function create()    {        parent::create(); // TODO: Change the autogenerated stub    }

    public function show()    {        return '工厂A';    }

}

class SingleB extends SingleCore{    public function create()    {        parent::create(); // TODO: Change the autogenerated stub    }

    public function show()    {        return '工厂B';    }}

abstract class FactoryMethod{    public function create_instance()    {

    }}

class FactoryMethodA extends FactoryMethod{    public function create_instance()    {        return new SingleA();    }

}

class FactoryMethodB extends FactoryMethod{

    public function create_instance()    {        return new SingleB();    }}

抽象工厂:主要特点,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
<?php

/** * 工厂模式,抽象工厂 * * 以往,简单工厂和工厂方法模式,局限于一类产品,有一个共同的基类 * 要为不同类提供一个对象创建的接口,那么就要使用抽象工厂了 * */abstract class SignleCore{    abstract public function show();}

abstract class MuliteCore{    abstract public function show();}

class SignleA extends SignleCore{    public function show()    {

    }}

class SignleB extends SignleCore{    public function show()    {

    }}

class MuliteA extends MuliteCore{    public function show()    {        // TODO: Implement show() method.    }}

class MuliteB extends MuliteCore{    public function show()    {        // TODO: Implement show() method.    }}

abstract class AbstractFactory{    abstract public function createSingle();    abstract public function createMulite();}class FactoryA extends AbstractFactory{    public function createSingle()    {        // TODO: Implement createSingle() method.        return new SignleA();    }

    public function createMulite()    {        // TODO: Implement createMulite() method.        return new MuliteA();    }

}

class FactoryB extends AbstractFactory{    public function createSingle()    {        // TODO: Implement createSingle() method.        return new SingleB();    }

    public function createMulite()    {        // TODO: Implement createMulite() method.        return new MuliteB();    }

}

转载于:https://www.cnblogs.com/wmzll/p/11090761.html

工厂模式(描述语言PHP)相关推荐

  1. python简单工厂模式_简单工厂模式-python语言实现

    abstractoperation.py                           //抽象操作类 代码如下: import string class Operation(object): ...

  2. 你真的能解释工厂模式吗?不屑解释工厂模式的大牛不是真牛

    最近闲来无事了解了一下设计模式,得知最基本的设计模式就是工厂模式,然而从网上找了大堆的文章却总感觉不得要领,似乎很多大神级人物都不屑于讲这么"简单"的东西,因为当前业内人们似乎只对 ...

  3. 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式

    设计模式C#描述之--简单工厂模式 前 言:设计模式是软件开发领域的精髓之一.学好设计模式是目前每一个开发人员的必修课.目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并 不很适合初学者 ...

  4. 设计模式C#描述——抽象工厂模式

    设计模式C#描述--抽象工厂模式 阅读此文应先阅读简单工厂模式与工厂方法模式 抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广. 假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产 ...

  5. 手撕设计模式之「简单工厂模式」(Java描述)

    前言 利用简单工厂模式可以实现对象创建和业务逻辑处理的分离,但存在工厂类职责过重,增添新产品违背开闭原则等问题.它不属于GoF 23种设计模式之一,但是它可以作为学习工厂方法模式前的一个很好的引导. ...

  6. Java描述设计模式(04):抽象工厂模式

    一.抽象工厂模式 1.生活场景 汽车生产根据用户选择的汽车类型,指定不同的工厂进行生产,选择红旗轿车,就要使用中国工厂,选择奥迪轿车,就要使用德国工厂. 2.抽象工厂模式 抽象工厂模式:定义了一个in ...

  7. Java描述设计模式(02):简单工厂模式

    一.生活场景简介 1.引入场景 订餐流程简单描述 1).食品抽象类,规定食品的基础属性操作 2).鱼类,鸡肉类食品类扩展 3).订餐流程类,根据食品名称,加工指定类型食品 4).模拟客户端预定操作 2 ...

  8. State_状态模式_PHP语言描述

    2019独角兽企业重金招聘Python工程师标准>>> State_状态模式定义: 允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎改变了它的类. 应用State_状态模式 ...

  9. 抽象工厂模式java_Java描述设计模式(04):抽象工厂模式

    一.抽象工厂模式 1.生活场景 汽车生产根据用户选择的汽车类型,指定不同的工厂进行生产,选择红旗轿车,就要使用中国工厂,选择奥迪轿车,就要使用德国工厂. 2.抽象工厂模式 1) 抽象工厂模式:定义了一 ...

  10. 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态

    介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...

最新文章

  1. 韩国IT业是怎么走向国际我们须要学习什么
  2. qemu+linux+x86+64,qemu以64位跟32位的方式跑busybox
  3. npm全局环境变量配置及解决VsCode使用时遇到的问题
  4. UCOS2_STM32移植详细过程(汇总)
  5. java super关键字_Java入门(二)下
  6. Filecoin官方提案FIP0013 添加批量提交ProveCommitSector以减少拥塞
  7. Eclipse中导入maven项目 maven update project报“Cannot nest ‘xx/src/main/resources‘ inside ‘xx/src ……”
  8. java 数组减除值_java – 删除数组中空值的最有效方法是什么.
  9. 科大讯飞 文字转语音
  10. Android视频编码的坑
  11. JAVA怎么给Excel加分页符_Excel插入分页符的方法和步骤
  12. android 对焦,Android相机对焦模式
  13. it高手与it民工区别
  14. 计算机密码设置要求包括哪些内容,电脑开机密码设置方法有哪些
  15. 数据库sql语句面试题
  16. python中字符串的基本操作_python字符串的基本操作
  17. 西电计算机学院毕设答辩,关于2020年(2016级)第二批本科生毕业设计(论文)盲审及答辩工作安排的通知...
  18. ABP框架心得系列-1.本土化和ABP核心
  19. Android如何生成设备节点
  20. 计算机软件故障的排除方法,Windows 7系统常见小故障以及排除方法

热门文章

  1. vue 第二天(常用指令及插值语法)
  2. Java I/O系统(一)
  3. Spring源码之ApplicationContext(四)功能补充
  4. [渝粤教育] 武汉理工大学 模拟电子技术基础 参考 资料
  5. [渝粤教育] 广东-国家-开放大学 21秋期末考试马克思主义基本原理概论(A)10882k1 (2)
  6. 在“BROWSEINFO”产生的“浏览文件夹”对话框中加入“新建文件夹”按钮
  7. Pandas系列(四)数据统计函数
  8. 读书笔记_Effective C++_条款一:将C++视为一个语言联邦
  9. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何在初始化的时候写入参数
  10. Quartz 触发器(SimpleTriggerCronTrigger )配置说明 cronExpression表达式 转