<?php
/*** Created by PhpStorm.* User: hzh* Date: 2018/8/4* Time: 16:17*/
/** 制定运动接口*/
interface Sport
{public function run();
}/** 制定进食接口*/
interface Eat
{public function breakfast();
}/** 狗狗类实现运动接口*/
class DogSport implements Sport
{public function run(){// TODO: Implement run() method.return "狗狗在运动";}
}/** 猫猫类实现运动接口*/
class CatSport implements Sport
{public function run(){// TODO: Implement run() method.return "猫猫在运动";}
}/** 狗狗类实现进食接口*/
class DogEat implements Eat
{public function breakfast(){// TODO: Implement breakfast() method.return "狗狗吃早餐";}
}/** 猫猫类实现进食接口*/
class CatEat implements Eat
{public function breakfast(){// TODO: Implement breakfast() method.return "猫猫吃早餐";}
}/** 抽象工厂类*/
abstract class AbstractFactory
{abstract protected function getSport($animal);abstract protected function getEat($animal);
}/** 运动工厂类继承抽象工厂类,并实现获取具体对象的方法*/
class SportFactory extends AbstractFactory
{public function getSport($animal){switch($animal){case 'Dog':return new DogSport();case 'Cat':return new CatSport();}}public function getEat($animal){// TODO: Implement getEat() method.return null;}
}/** 进食工厂类继承抽象工厂类,并实现获取具体对象的方法*/
class EatFactory
{public function getEat($animal){switch($animal){case 'Dog':return new DogEat();case 'Cat':return new CatEat();}}public function getSport($animal){return null;}
}/** 工厂管理器*/
class FactoryProducer
{public function getFactory($factory){switch($factory){case 'Eat':return new EatFactory();case 'Sport':return new SportFactory();}}
}$producer = new FactoryProducer();$data = [];
$eat = $producer->getFactory('Eat');
$eat_cat = $eat->getEat('Cat');
$data[] = $eat_cat->breakfast();$sport = $producer->getFactory('Sport');
$sport_dog = $sport->getSport('Dog');
$data[] = $sport_dog->run();print_r($data);
/*Array
([0] => 猫猫吃早餐[1] => 狗狗在运动
)
*/

PHP设计模式之抽象工厂模式相关推荐

  1. 设计模式系列·抽象工厂模式

    前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...

  2. 设计模式三—抽象工厂模式

    设计模式三-抽象工厂模式 一.定义 抽象工厂模式是工厂方法模式的进一步抽象.如果产品簇中只有一种产品,则退化为工厂方法模式. 二.原理图 三.代码实例 * 苹果和土豆是园丁1的杰作 * 葡萄和西红柿是 ...

  3. 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)

    原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Facto ...

  4. 设计模式复习-抽象工厂模式

    设计模式复习-抽象工厂模式 有两种硬件,PC和Phone,有两种系统,Windows和Linux,现在假设PC和Phone上全都能安装这两个系统,并且将来硬件不会在变化,但是系统可能需要扩展,比如扩展 ...

  5. 设计模式之四(抽象工厂模式第三回合)

    原文:设计模式之四(抽象工厂模式第三回合) 前言 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 抽象工厂模式最大的好处便是易于交换产品系列,由于具体工厂类,例如I ...

  6. python抽象工厂模式_Python设计模式之抽象工厂模式

    Python设计模式之抽象工厂模式 这篇文章主要为大家详细介绍了Python设计模式之抽象工厂模式,感兴趣的小伙伴们可以参考一下 python面向对象编程入门,我们需要不断学习进步 "&qu ...

  7. 设计模式-04抽象工厂模式

    设计模式-04抽象工厂模式 文章中涉及到的代码,请自行下载 https://gitee.com/pan_xiao_lei123/designmode.git 前面介绍的工厂方法模式中考虑的是一类产品的 ...

  8. C#设计模式(4)——抽象工厂模式

    C#设计模式(4)--抽象工厂模式 一.引言 在上一专题中介绍了工厂方法模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码),而工厂方法 ...

  9. 设计模式之抽象工厂模式(Abstract Factory)摘录

    面向对象系统的分析和设计实际上追求的就是两点:高内聚(Cohesion)和低耦合(Coupling). 23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.Fa ...

  10. java 工厂模式的写法_Java23种设计模式之抽象工厂模式

    概述 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. ...

最新文章

  1. oracle跑with语句很慢,oracle 11g新特性---WITH语句增强
  2. qt creator报错处理积累
  3. SaltStack 安装、简单配置和远程执行
  4. SAP FBCJ现金日记帐增强操作手册
  5. 【JVM性能调优】使用jstack找出最耗CPU的java线程
  6. php中数组生成下拉选项,php数组生成html下拉列表的方法
  7. 我只是一个程序代码员吗?
  8. 数据科学入门与实战:Matplotlib绘图DateFrame
  9. python判断某一天是周几
  10. SQL数据旋转的问题
  11. Codeforces Round #237 (Div. 2)
  12. 说说微信聊天记录收费这件事
  13. nginx 配置参数说明
  14. 300.最长上升子序列
  15. SpringBoot 集成 Caffeine、Redis实现双重缓存方式(二)
  16. 软件测试简历,这一点你是否漏掉
  17. 微信小程序服务通知 模板消息
  18. python 金融应用(一)期权定价公式的计算
  19. 半挂式洒水车的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. 排队问题解题思路_有关排队问题的排列组合题解法举例

热门文章

  1. dedeCMS后台入口安全修改
  2. phpcmsV9 QQ登录问题分析 - 踩坑篇
  3. foundApp宣传展示页企业网站模板
  4. 8.0服务器维护时间,魔兽世界8.0服务器维护把玩家心态搞崩 网友:喜闻乐见
  5. cad中lisp文件给恶作剧_CAD中LISP程序使用方法
  6. 织梦dede模板|HTML5建材陶瓷装修设计网站织梦dede模板源码[自适应手机版]
  7. 全网最细Docker安装Minio,填满最新版大坑(强烈推荐收藏)
  8. SSM之检验用户名是否重复
  9. 编写超级可读代码的15个最佳实践
  10. 系统缓存全解析 [转]