php实现工厂设计模式,使用接口实现,表面上接口没有什么用,因为php是类型自动转换的。实现上使用接口可以约束类的定义,从而实现一致的访问。

接口在php只能起到约束类的定义作用,虽不像c#/java那么直观,但基于oop的封装要求,使用接口可以提高程序的可扩展性,如实现代理设计模式。

<?php//人类接口interface IHuman{function GetName();}//男人类,实现人类接口class ManClass implements IHuman{//获取姓名方法 public function GetName(){return "I'm man."."<br>";}}//女人类,实现人类接口class WomanClass implements IHuman{//获取姓名方法 public function GetName(){return "I'm Woman."."<br>";}}//类工厂,根据需要生产不同实例对象返回class ManFactory{//根据参数获取实例对象public function GetIHuman($IHuman="man"){if($IHuman=="woman"){return new WomanClass();}else if($IHuman=="man"){return new ManClass();}else{return null;}}//直接获取woman类public function GetWoman(){return new WomanClass();//return new ManClass();}//直接获取man类public function  GetMan(){return new ManClass();}}$ManFactory=new ManFactory();$ManClass=$ManFactory->GetIHuman();echo $ManClass->GetName();$IHuman=$ManFactory->GetIHuman("woman");echo $IHuman->GetName();$Woman=$ManFactory->GetWoman();echo $Woman->GetName();$Man=$ManFactory->GetMan();echo $Man->GetName();?>

运行结果:

I'm man.
I'm Woman.
I'm Woman.
I'm man.

转载于:https://www.cnblogs.com/wusee/archive/2012/06/17/2552610.html

php使用接口实现工厂设计模式相关推荐

  1. 接口、工厂方法的设计模式、代理模式

    三.接口: 接口是定义的一种功能:interface关键字表明是一个接口,定义的是一个功能.这些功能也可以被类使用,表明的是此接口与这些类发生的关系. implements表明类实现接口,实现接口以后 ...

  2. Java设计模式(四):工厂设计模式

    1. 工厂设计模式 1.1 应用场景 由于需求的变化,一个类的子类经常面临着剧烈的变化,但他却拥有比较稳定的接口.使用一种封装机制来"隔离这种易变对象的变化",工厂方法定义一个用于 ...

  3. 工厂设计模式----python版本

    #!/usr/bin/python # -*- coding: UTF-8 -*- #工厂设计模式 ''' date:2016/8/21 ''' #形状接口 class Shape(object):d ...

  4. 用C# (.NET Core) 实现抽象工厂设计模式

    本文的概念性内容来自深入浅出设计模式一书.上一篇文章讲了简单工厂和工厂方法设计模式 使用的是披萨店的例子. 文将继续使用这个例子, 这里要用到抽象工厂. 披萨店的需求变更 现在披萨店在各地授权了很多连 ...

  5. 抽象工厂和工厂方法示例_抽象工厂设计模式示例

    抽象工厂和工厂方法示例 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此 ...

  6. 设计模式 工厂方法_工厂设计模式–一种有效的方法

    设计模式 工厂方法 如您所知,"工厂方法模式"或俗称"工厂设计模式"是"创意设计模式"类别下的一种设计模式. 模式背后的基本原理是,在运行时 ...

  7. 工厂设计模式和策略设计模式_设计模式:策略

    工厂设计模式和策略设计模式 这次我想谈谈策略设计模式 . 通过这种方式,我开始撰写有关行为设计模式的文章. 这种模式表示对象之间的某些交互模式,以使代码更灵活且组织得更好.此方法的最本质点是对象之间的 ...

  8. 抽象工厂模式设计模式_抽象工厂设计模式解释

    抽象工厂模式设计模式 抽象工厂设计模式是工厂设计模式的另一种形式. 这种模式可以被视为"超级工厂"或"工厂工厂". 抽象工厂设计模式(属于"四人帮&q ...

  9. 抽象工厂设计模式示例

    本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要的原因,并了解何时以 ...

最新文章

  1. python qtdesigner 提升类_python3+PyQt5+Qt Designer实现扩展对话框
  2. 【内网穿透】生壳SSH映射 for Linux 使用教程
  3. 小学生python入门-小学生Python入门基础知识有哪些
  4. Linux监控平台 zabbix介绍和安装
  5. 卸载受密码保护SEP Norton 11
  6. Python-TKinter布局之pack
  7. 委托事件实现更新窗体
  8. Mysql 基础命令
  9. php验证码完整功能,用PHP实现验证码功能
  10. CCNP交换实验(5) -- 网关热备冗余
  11. tomcat 热部署 生产环境_详解tomcat热部署和热加载的方法
  12. 我们工作到底为了什么
  13. 音视频传输协议之 RTMP
  14. 电脑使用小常识(2):新手装软件指南,防止流氓软件
  15. FTP上传和WEB上传的区别
  16. cubieboard服务器系统,cubieboard 搭建家用服务器
  17. 硬核!深信服春招3面,终获20k入职offer!
  18. 彻底解决The last packet successfully received from the server was * milliseconds ago问题
  19. 时尚穿越html5游戏,时尚穿越之旅
  20. Java算法题:Z字形变换

热门文章

  1. Web框架——Flask系列之json、jsonify模块的使用(十四)
  2. 论文阅读 - TransNet and TransNet V2
  3. LeetCode 836. 矩形重叠
  4. LeetCode 451. 根据字符出现频率排序(map+优先队列)
  5. 算法--排序--大小写字母数字分离(桶排序思想)
  6. 武林c语言,详解C语言中条件编译
  7. linux下实现内存监视,shell脚本来监视Linux上的内存使用情况
  8. oracle 打开 ctl,Oracle 19c 随系统systemctl启动数据库
  9. wpf计算字符大小占像素_LCD作为终端显示字符串的过程
  10. TCP程序流程及服务器客户端