php使用接口实现工厂设计模式

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据生态圈常用组件(一):数据库、查询引擎、ETL工具、调度工具等

你的闺蜜在减肥&#xff0c;隔壁老王在练腰&#xff0c;你还不赶紧来学习 整理了当年使用过的一些&#xff0c;大数据生态圈组件的特性和使用场景&#xff0c;若有不当之处&#xff0c;请留言斧正&#xff0c;一起学习成长。 组件名属性标签特性使用场景价格成本Mysql 关系型数…

科学革命与科学教科书

来源&#xff1a;《出版科学》2018年第4期摘要&#xff1a;借助科学哲学的反思&#xff0c;加上科学家和出版人的创新实践&#xff0c;一定能够出现既能促进常规科学研究、又能为科学革命做出某些准备的新型科学教科书。《科学革命的结构》托马斯 • 库恩著&#xff0c;金吾伦、…

barcode4j

Barcode4J由Java语言编写而成&#xff0c;可以灵活的生成条形码。它采用Apache License V2.0许可&#xff0c;这使得它很容易在商业中被使用。它可以让您生成各种流行的一维和二维条码&#xff0c;包括DataMatrix 和 PDF417。以各种格式输出&#xff0c;包括SVG, EPS, bitmaps和…

浅析段错误和栈溢出

什么段 我们在学习微机原理的时候就遇到过段&#xff0c;它代表在一个可执行文件中各种的类型信息存放的地方。   正文段&#xff1a;text用于存储指令&#xff1b;   数据段&#xff1a;data用于存储已初始化的全局变量&#xff1b;   bss段&#xff1a;用来存放程序中未…

大数据生态圈常用组件(二):概括介绍、功能特性、适用场景

三更灯火五更鸡&#xff0c;正是男儿读书时。 小编整理了一些常用的大数据组件&#xff0c;使用场景及功能特性&#xff0c;希望对后浪有所帮助。 分类名称简介功能特点使用场景大数据存储HDFSHDFS是一个分布式的文件系统&#xff0c;它具有高度的容错&#xff0c;高吞吐量&am…

物联网可应用于十大行业嘛?

来源&#xff1a;亿欧智库摘要&#xff1a;近些年来&#xff0c;全球经济增长乏力&#xff0c;物联网已变成了各国经济发展的新动力。基于此&#xff0c;亿欧智库近日将发布一份新的报告《2018物联网行业应用研究报告》&#xff0c;报告总结出了物联网的十大应用行业&#xff0…

ubuntu下查看window下文本文件乱码的解决方法

在Ubuntu中&#xff0c;在英文的locate下面查看一些从window系统生成的文本文件&#xff0c;有可能用gedit打开时出现的都是乱码&#xff0c;今天用gedit -h看了一下&#xff0c;里面有一个选项是--encoding&#xff0c;于是在终端中运行 gedit --encodinggbk打开gedit&#xf…

浅析死锁

什么是死锁&#xff1f; 死锁就是两个或多个进程在执行的过程中&#xff0c;由于竞争资源或者由于彼此通信而造成的一种阻塞现象&#xff0c;当进程处于这种状态时&#xff0c;如果没有外力的作用&#xff0c;这些进程都无法继续向前进行。这是操作系统层面的一个错误&#xff…

一篇文章搞懂数据仓库:三范式与反范式

少年易老学难成&#xff0c;一寸光阴不可轻。 目录 一、第一范式 二、第二范式 三、第三范式 四、反范式化 五、范式化设计和反范式化设计的优缺点 5.1 范式化 &#xff08;时间换空间&#xff09; 5.2 反范式化&#xff08;空间换时间&#xff09; 六、OLAP和OLTP中范…

2018年全球AI突破性技术TOP10

来源&#xff1a;艾瑞网摘要&#xff1a;聪明的科技公司都不再单一的专注于自己的传统业务&#xff0c;而是着眼于未来&#xff0c;不断创新技术&#xff0c;跨界融合打造一个整合的生态系统。人工智能是个高科技、宽领域、多维度、跨学科的集大成者&#xff0c;从立足大数据、…

Linux的发展

1. Linux发展史 说起Linux你可能要问Linux是从哪里来的&#xff1f;他是怎么发展的&#xff1f;   要想知道Linux&#xff0c;还得从UNIX说起。 1.1 UNIX发展的历史 1968年&#xff0c;一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊…

Hbase rowkey设计原则,热点问题

rowKey的作用 读写数据时通过 RowKey 找到对应的 Region&#xff1b;MemStore 中的数据按 RowKey 字典顺序排序&#xff1b;HFile 中的数据按 RowKey 字典顺序排序。 rowkey设计原则 唯一性&#xff1a;类似于MySQL、Oracle中的主键&#xff0c;用于标示唯一的行&#xff1b;…

MEF: MSDN 杂志上的文章(15) 拒绝【多个导出,但只用一个导入,会拒绝,但还是稳定的组合】...

http://msdn.microsoft.com/zh-cn/magazine/ee291628.aspx转载于:https://www.cnblogs.com/Ken-Cai/archive/2012/06/22/2558978.html

全球11个行业、71家知名企业的创新Lab与布局

来源&#xff1a;CBInsights新技术的革新引发了商业世界重构的浪潮&#xff0c;在这一波由人工智能引领的创新潮流里唯有拥抱变化才能不为时代淘汰&#xff0c;顺应趋势取得更大的发展。新技术的革新引发了商业世界重构的浪潮&#xff0c;在这一波由人工智能引领的创新潮流里唯…

组队竞赛

题目解析&#xff1a; 队伍的水平值等于该队伍队员中第二高水平值&#xff0c;为了所有队伍的水平值总和最大的解法&#xff0c;也就是说每个队伍的第二个值是尽可能大的值。所以实际值把最大值放到最右边&#xff0c;最小是放到最左边。 解题思路&#xff1a; 本题的主要思路是…

【SD】差异值 生成 同一人物 制作 表情包 【1】

说明&#xff1a;只对AI生成的人物&#xff0c;效果稳定。 Reference差异值 生成表情 首先生成一张图片。 测试命令&#xff1a;1 man,chibi,full body, 模型&#xff1a;envyclarityxl02_v10.safetensors [f6c13197db] 种子&#xff1a;2704867166 》》测试命令&#xff1a…

MySQL索引原理、失效情况

声明&#xff1a;本文是小编在学习过程中&#xff0c;东拼西凑整理&#xff0c;如有雷同&#xff0c;纯属借鉴。 Mysql5.7的版本, InnoDB引擎 目录 1 mysql索引知识 1.1 BTree索引 1.2 主键索引和普通索引的区别 1.3 唯一索引vs普通索引 2 mysql索引优化 2.1 查看索引使…

2018年人工智能全景图与发展趋势分析

来源&#xff1a;专知摘要&#xff1a;风险资本家马特图尔克&#xff08;Matt Turck&#xff09;最近发布文章&#xff0c;能力越大&#xff0c;责任越大&#xff0c;介绍了大数据与人工智能在2018年发展的趋势&#xff0c;并发布了全景图&#xff0c;涵盖基础架构、开源框架、…

李晨 | 无人机市场浅析

来源&#xff1a;无人机作者简介&#xff1a;西北工业大学民用无人机研发中心副主任无人机市场浅析无人机市场分类过去无人机一直是军用为主&#xff0c;不论是伊拉克战争还是好莱坞大片&#xff0c;无人机在执行军事任务方面起到了不可替代的作用。在2010年以前&#xff0c;军…

[转载] 财经郎眼20120423:长点心吧“两桶油”!

转载于:https://www.cnblogs.com/6DAN_HUST/archive/2012/06/24/2559970.html