工厂类php实现,设计模式之工厂模式之工厂方法(php实现)

github:

git@github.com:ZQCard/design_pattern.git

/**

* 工厂方法

* 使用开闭原则来分析下工厂方法模式。当有新的产品产生时,只要按照抽象产品角色、抽象工厂角色提供的合同来生成,

* 那么就可以被客户使用,而不必去修改任何已有的代码。(即当有新产品时,只要创建并基础抽象产品;新建具体工厂继承抽象工厂;

* 而不用修改任何一个类)工厂方法模式是完全符合开闭原则的!

*/

(1)IShape.class.php(抽象接口,用于规定实现类规范)

namespace Factory\FactoryMethod;

interface IShape{

public function draw();

}

(2)AbstractShape.class.php(抽象父类,用于规范子类实现)

namespace Factory\FactoryMethod;

abstract class AbstractShape

{

public abstract function getShape();

}

(3)CircleFactory.class.php(具体工厂类,用于实现指定子类)

namespace Factory\FactoryMethod;

class CircleFactory extends AbstractShape

{

public function getShape()

{

return new CirCle();

}

}

(4)Circle.class.php(具体实现类)

namespace Factory\FactoryMethod;

class CirCle

{

public function draw()

{

return '画一个圆形';

}

}

(5)factoryMethod.php(客户端)

spl_autoload_register(function ($className){

$className = str_replace('\\','/',$className);

include $className.".class.php";

});

use \Factory\FactoryMethod\CircleFactory;

$factory = new CircleFactory();

$shape = $factory->getShape();

$string = $shape->draw();

echo $sting;

优点:遵守开闭原则

缺点:增加一个产品,需要增加2个类

Java设计模式之工厂模式(简单工厂模式+工厂方法模式)

摘自http://blog.csdn.net/jason0539/article/details/23020989 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是 ...

Java设计模式之【工厂模式】(简单工厂模式,工厂方法模式,抽象工厂模式)

Java设计模式之[工厂模式](简单工厂模式,工厂方法模式,抽象工厂模式) 工厂模式出现的原因 在java中,创建一个对象最简单的方法就是使用new关键字.但在一些复杂的业务逻辑中,创建一个对象不只需 ...

设计模式---对象创建模式之工厂方法模式(Factory Method)

前提:“对象创建”模式 通过“对象创建”模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定.它是接口抽象之后的第一步工作. 典型模式(表现最为突出) 工 ...

详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂) v阅读目录

1楼留头头大神:http://www.cnblogs.com/toutou/p/4899388.html   v阅读目录 v写在前面 v简单工厂模式 v工厂方法模式 v抽象工厂模式 v博客总结 v博客 ...

iOS常用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

1. 简单工厂模式 如何理解简单工厂,工厂方法, 抽象工厂三种设计模式? 简单工厂方法包含:父类拥有共同基础接口,具体子类实现子类特殊功能,工厂类根据参数区分创建不同子类实例.该场景对应的UML图如下 ...

iOS经常使用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

1. 简单工厂模式 怎样理解简单工厂,工厂方法. 抽象工厂三种设计模式? 简单工厂的生活场景.卖早点的小摊贩.他给你提供包子,馒头,地沟油烙的煎饼等,小贩是一个工厂.它生产包子,馒头,地沟油烙的煎饼. ...

python 设计模式之工厂模式 Factory Pattern (简单工厂模式,工厂方法模式,抽象工厂模式)

十一回了趟老家,十一前工作一大堆忙成了狗,十一回来后又积累了一大堆又 忙成了狗,今天刚好抽了一点空开始写工厂方法模式 我看了

P109--P133 这25页 ...

Delphi 设计模式:《HeadFirst设计模式》Delphi2007代码---工厂模式之工厂方法[转]

1   2{工厂模式之工厂方法 }   3{ 产品类                              }   4{ 编译工具 :Delphi20 ...

Java设计模式之-----工厂模式(简单工厂,抽象工厂)

一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在中分为三类:1)简单工厂模式(Simple Factor ...

PHP简单工厂模式、工厂方法模式和抽象工厂模式比较

PHP工厂模式概念:工厂模式是一种类,它具有为您创建对象的某些方法.您可以使用工厂类创建对象,而不直接使用 new.这样,如果您想要更改所创建的对象类型,只需更改该工厂即可.使用该工厂的所有代码会自动 ...

随机推荐

PYTHON map()函数详解

map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 栗子如下↓ 图片来自于网上 def f(x,a): return x+x ...

在Salesforce中编写Unit Test

Unit Test 也是一个 Class 文件,所以在创建 Unit Test 的时候要选择 Test Class 类型来创建,请看如下截图(在Eclipse中): 编写 Unit Test 基本流程 ...

pt-table-checksum解读

pt-table-checksum是目前可以说是最好的查看主从一致性的工具 先来个使用例子,有助快速上手使用 在主库执行: mysql>GRANT SELECT, PROCESS, SUPER, ...

Jersey框架三:Jersey对HTTPS的支持

Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的 ...

C++中进制转换问题

一直在刷题的时候,都会遇到一个坑,就是进制转换的问题.而每一次都傻乎乎的自己去实现一个.所以算是对以前的坑的一个总结. itoa 函数 itoa是广泛应用的非标准C语言和C++语言扩展函数.由于它不是 ...

SharePoint Javascript客户端应用入门

SharePoint Javascript客户端应用入门 大家可以点击观看视频

linux(centos7)设置tomcat开机启动

1.在/etc/rc.d/rc.local中加入: #java environment export JAVA_HOME=/usr/java/jdk1.8.0_161 export CLASSPATH ...

Springboot添加定时任务

请参考这篇文章:https://blog.csdn.net/ysp_0607/article/details/71430281

python日常小计

1.查看变量类型:  pring type(item) 2.解决list中的中文显示乱码 使用decode('string_escap')将数据库查询返回的将带转义的字节码字符串转换为成utf-8中文

Lucene.net 基本示例 《第一篇》

Lucene.net是java平台搜索插件Lucene的移植版.它的主要用于开发搜索引擎,站内搜索等. 开篇之前,写个最简单的DEMO,让自己先体验下Lucene.net的魅力,顺便搭建环境. sta ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值