PHP五种常用的设计模式——工厂模式
来源:互联网 发布:数据分析方案是什么? 编辑:程序博客网 时间:2024/06/05 08:47
一直对设计模式有一种敬畏之心,每次想要看设计模式的时候就会想到Erich Gamma
,Richard Helm
, Ralph Johnson
, John Vlissides
的黑皮《设计模式》
,基本都望而止步,要把那本书看完可不是一时半会的,而且在没有项目经验的情况下,个人感觉基本都是纸上谈兵。
今天在IBM Developerworks
上看到一篇文章将PHP
中常用的五种设计模式,感觉还不错,而且只有五种五种五种(重要的强调三遍)!先从简单的入手,把这五种消灭了再说。以后慢慢学习其他的设计模式。
工厂模式(Factory Pattern
)
工厂这个词的使用是非常形象,字面意思可以这样认为,这种模式下,我们有一个工厂,这个工厂生产很多一种或者几种产品(其实多种的情况是覆盖了一种的),但是每个产品怎么生产和包装的我们不知道,其实我们也不需要知道,知道的越多你就越迷糊,以后你的行为就受制于太多杂事,也就是我们常说的耦合度太高,因此我们就将所有的事情交给工厂负责,我们只用告诉工厂需要什么,工厂把产品交付给你就是了。一旦产品的工艺发生改变,工厂负责就好,你使用该产品的工艺不受影响。因此工厂模式可以大大的降低系统的耦合度,增强系统的稳定性,当然也会提高代码的复用率。
在实际的程序设计中,工厂相当于一个对外的接口,那么这个接口的返回类型是确定的,那么我们怎么通过这个工厂来生产不同的产品发回给客户呢?很简单,做一个所有产品的“模子”就可以,这个“模子”有每个产品的所有特征,但是不能用,需要具体的产品实现这些特性,就是我们常说的Interface
。
使用类图表示如下:
PHP
的实现
- 编写一个接口
Product.php
<?php/*** Created by PhpStorm.* User: Defei* Date: 2015/8/8* Time: 16:14*/interface Product{ public function getName();}
- 设计一个产品
A
实现Product
接口
<?php/*** Created by PhpStorm.* User: Defei* Date: 2015/8/8* Time: 16:16*/class ProductA implements Product{ public function getName(){ // TODO: Implement getName() method. echo '我是产品A'; }}
- 设计产品
B
实现Product
接口
<?php/*** Created by PhpStorm.* User: Defei* Date: 2015/8/8* Time: 16:17*/class ProductB implements Product{ public function getName(){ // TODO: Implement getName() method. echo '我是产品B'; }}
- 建造一座工厂生产产品
A
和B
<?php/*** Created by PhpStorm.* User: Defei* Date: 2015/8/8* Time: 16:18*/class ProductFactory{ /** * @param $product_name * @return mixed */ public function factory($product_name){ return new $product_name; //PHP可以使用名字直接new一个同名的对象这个很方便 }}
测试
产品A
和B
已经设计好了,工厂也建好了,下一步就是测试一下这个工厂对的生产能力如何。
<?php/*** Created by PhpStorm.* User: Defei* Date: 2015/8/8* Time: 16:20*/include 'ProductFactory.php';include 'Product.php';include 'ProductA.php';include 'ProductB.php';$factory = new ProductFactory();echo $factory->factory('ProductA')->getName().PHP_EOL;echo $factory->factory('ProductB')->getName();
输出结果如下:
- PHP五种常用的设计模式——工厂模式
- 设计模式—工厂模式(五)
- 常用设计模式——工厂模式
- PHP常用的设计模式--工厂、单例模式
- PHP五种常用设计模式
- 架构师常用的五种 PHP 设计模式
- 设计模式读书笔记(五)——工厂方法模式
- 设计模式(五)——工厂模式(Factory Method)
- 设计模式系列(五)——抽象工厂模式
- 设计模式(五)——抽象工厂模式
- 五、工厂方法模式——设计模式学习笔记
- 设计模式(五)——抽象工厂模式
- 设计模式(五)——工厂方法模式
- iOS常用设计模式——简单工厂设计模式
- 常用设计模式(三)——工厂设计模式
- php设计模式——工厂方法设计模式
- PHP设计模式——简单工厂
- PHP设计模式——工厂方法
- 周赛
- HDU - 3584 Cube (三维树状数组 + 区间修改 + 单点求值)
- 周赛
- 第九次java作业
- HDU 1198 Farm Irrigation
- PHP五种常用的设计模式——工厂模式
- mac关闭键盘灯
- Hive常用数据导入导出总结
- Java中的堆和栈
- struts2对国际化的支持
- STM32 NVIC 中断优先级管理
- android 的屏幕适配问题,dp与px的换算
- STM32 时钟系统
- 随笔