PHP 工厂模式浅析
//抽象出一个人的接口interface Person{ public function showInfo();}//继承于人的学生类class Student implements Person{ public function showInfo() { // TODO: Implement showInfo() method. echo "我是一个学生"; }}
//继承于人的教师类
class Teacher implements Person{ public function showInfo() { // TODO: Implement showInfo() method. echo "我是一个老师"; }}//人类工厂class PersonFactory{ public static function factory($person_type){ //传进来的人的类型,首字母大写 $class_name = ucfirst($person_type); if (class_exists($class_name)){ return new $class_name; }else{ throw new Exception("类:".$class_name."不存在"); } }}//学生类的实例化$student = PersonFactory::factory('student');$student->showInfo();
转载于:https://www.cnblogs.com/kgtest/p/8963699.html
PHP 工厂模式浅析相关推荐
- 浅析设计模式(三)——抽象工厂模式
抽象工厂模式(Abstract-Factory,创建型模式) 本文的结构: 一.抽象工厂模式的定义 二.抽象工厂模式的参与者及其角色 三.抽象工厂模式的类图 四.抽象工厂模式的示例 五.参考 一.抽象 ...
- python工厂模式 取代__init___浅析Python 简单工厂模式和工厂方法模式的优缺点
前言 在<设计模式>一书中工厂模式提到了: 工厂方法模式(Factory Method) 抽象工厂模式 (Abstract Factory) 但是在实际过程中还有一种工厂模式经常被使用,那 ...
- (设计模式之一)浅析简单工厂模式
简单工厂模式 举个两个例子: 我输入两个数字和(+ - * /)其中一个符号,计算出两个数的结果. 饲养员让(狗 猫 鸟 猪)其中一个动物 叫 这里就是一个简单的工厂模式, 用户只需要提供他需要的接口 ...
- 设计模式 笔记4 | 简单工厂模式 在源码中的应用 | Calendar 日历 | 源码浅析 | 使用总结 | 建造者模式
文章目录 一.Calendar 日历类 1.1 内部属性 1.2 设置时间属性值 1.3 获取时间属性 1.4 使用 Calander 计算时间 二.Calender 类中的设计模式 2.1 简单工厂 ...
- 【Spring】工厂模式解耦
问题: 程序的耦合 耦合:程序间的依赖关系 包括:类之间的依赖 方法之间的依赖 解耦:降低程序之间的耦合关系 实际开发:编译期不依赖,运行期才依赖 解耦思路: ...
- GOF23设计模式(创建型模式)工厂模式
目录: 一:工厂模式的核心本质 二:关于面向对象的六大基本原则 三:工厂模式的三大类详解(代码示例,详细分析) 首先,上咱本GOF23所有工厂模式的分类表格!!! 创建型模式 单例模式.工厂模式.抽象 ...
- 大话设计模式之简单的工厂模式
第一章:代码无错就是优-简单的工厂模式 先建立一个计算类Operation Operation.h文件 @interface Operation : NSObject@property(nonatom ...
- 设计模式之简单工厂模式
一.概述 工厂模式具体包括了简单工厂.工厂方法.抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计模式中的创建型,其中简单工厂并不属于GOF的23中模式. 但是它是理解其它的工厂模式的一个很好 ...
- 基础设计模式:单例模式+工厂模式+注册树模式
单例模式: 通过提供自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次. 使用场景: 一般数据库实例都会用单例模式 实现: 单例设计模式就是要一个类只能实例化一个对象. 要想让一个类只能实 ...
- 抽象工厂模式 java实例 tclhaier_Unity常用的设计模式_工厂模式系列之抽象工厂模式...
在工厂方法模式中,工厂只负责生产具体的产品,每一个具体的工厂对应着一个具体的产品,工厂方法也具有唯一性,如果有时候我们需要一个工厂方法提供多个产品而不是一个单一的产品,例如:海尔品牌不止生产海尔TV, ...
最新文章
- 《BI项目笔记》用Excel2013连接和浏览OLAP多维数据集
- 【C++】algorithm具体操作记录
- prism项目搭建 wpf_Prism完成的一个WPF项目
- 【Angular】启动过程
- httpclient base64 文件上传_文件上传下载
- 工业交换机在城市智慧轨道交通中的应用分析
- (63)FPGA面试题-用verilog写一段代码,实现消除一个glitch(毛刺)(二)
- Oracle 外部表加载监听日志,使用外部表访问监听日志
- c++ 使用gdiplus
- 什么是OM3、OM4光纤跳线?
- 微博数据采集的10个经典方法
- Mac Osx X86 10.4.7,确实不错
- CWE-476: NULL Pointer Dereference(空指针间接引用)
- RocketMQ消费进度管理
- 树莓派linux led字符设备驱动( platform)
- 中间商只会赚差价?论接口的重要性
- Windows11 安装教程(ultraiso制作启动盘)
- 【Airpods Pro】无法通过蓝牙连接电脑
- app推广有哪些方式?
- gitlab快速上手【gitlab基本功能使用教程】
热门文章
- hwd分别是长宽高_丰田重磅新RAV4荣放!不仅颜值高了 配置还再升级,仅18万
- javaweb环境的配置 以及tomcat的安装
- Commons Collections4 简单使用
- 多人在线答题游戏 小程序 (规划设计方案)
- java 多线程单例模式
- nginx 定时分割日志
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_2、SpringBoot2.x依赖环境和版本新特性说明...
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第2节 反射_6_反射_获取字节码Class对象的三种方式...
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_7_Stream流中的常用方法_limit...
- HAproxy的安装配置及动静分离