php设计模式的作用是什么意思,php设计模式工厂模式有什么作用?
我们给大家介绍了php工厂模式的好处,工厂模式的含义,以及工厂模式的三种情况,那么我们今天继续给大家介绍php工厂模式的作用是什么!
工厂模式分为三种:简单工厂、工厂方法、抽象工厂 ,三种工厂的区别是,抽象工厂由多条产品线,而工厂方法只有一条产品线,是抽象工厂的简化。而工厂方法和简单工厂相对,大家初看起来好像工厂方法增加了许多代码但是实现的功能和简单工厂一样。但本质是,简单工厂并未严格遵循设计模式的开闭原则,当需要增加新产品时也需要修改工厂代码。但是工厂方法则严格遵守开闭原则,模式只负责抽象工厂接口,具体工厂交给客户去扩展。在分工时,核心工程师负责抽象工厂和抽象产品的定义,业务工程师负责具体工厂和具体产品的实现。只要抽象层设计的好,框架就是非常稳定的。
简单工厂
优点:产品使用者不需要关心产品类的创建过程,与具体产品的实现类达到解耦的效果;
缺点:违背"开放--封闭"原则(OCP),因为新增一个产品类的时候,需要修改原先的工厂方法;
适用场合:当工厂类负责创建的对象比较少的时候;
实现方法:定义一个简单共产类,并定义一个静态生产方法,根据传进来的type参数生成对应的具体父亲类
具体代码如下<?php //抽象产品interface Person {
public function getName(); }//具体产品实现class Teacher implements Person {
public function getName() {
return "老师n";
}}class Student implements Person {
public function getName() {
return "学生n";
}}//简单工厂class SimpleFactory {
public static function getPerson($type) {
$person = null;
if ($type == 'teacher') {
$person = new Teacher();
} elseif ($type == 'student') {
$person = new Student();
}
return $person;
}}//简单工厂调用class SimpleClient {
function main() {
// 如果不用工厂模式,则需要提前指定具体类
// $person = new Teacher();
// echo $person->getName();
// $person = new Student();
// echo $person->getName();
// 用工厂模式,则不需要知道对象由什么类产生,交给工厂去决定
$person = SimpleFactory::getPerson('teacher');
echo $person->getName();
$person = SimpleFactory::getPerson('student');
echo $person->getName();
}}
总结:
通过本文的学习相信大家对php工厂模式的作用有了一个新的概念,希望对你的工作有所帮助!~
相关推荐:
php设计模式的作用是什么意思,php设计模式工厂模式有什么作用?相关推荐
- 《javascript设计模式》笔记之第七章:工厂模式
在读了这章之后,根据我个人现在的理解,工厂模式就是:将一个类或者一个方法称为一个工厂,然后再将一些模块交给这个工厂,让这个工厂按照给它的不同模块产出不同的实例. 下面为正文: 一:简单工厂: 例子: ...
- 设计模式(6)[JS版]-JavaScript如何实现抽象工厂模式?
目录 1 学习目标 2 什么是抽象工厂模式? 3 抽象工厂模式作用 4 工厂模式参与者 5 代码实现 1 学习目标 通过本篇文章的学习,你应当掌握以下知识: 1 知道什么是抽象工厂模式? 2 掌握抽象 ...
- 23种设计模式C++源码与UML实现--简单工厂模式
简单工程模式 简单工厂模式,属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 模式中包含的角色及其职责 工厂角色 简单工厂模式的 ...
- CSharp设计模式读书笔记(3):抽象工厂模式(学习难度:★★★★☆,使用频率:★★★★★)...
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类.抽象工厂模式又称为Kit模式. 模式角色和结构图: 抽象工厂是指一 ...
- java圣经_Java设计模式圣经连载(01)-简单工厂模式[转载]
简单工厂模式是类的创建,又叫静态工厂方法(Static Factory Methord)模式.简单工厂模式是由一个工厂对象决定创造哪一种产品类的实例. 1.1.1 工厂模式的几种形态 工厂模式专门负责 ...
- 设计模式系列一创建型之(抽象工厂模式)
1.抽象工厂简介 在软件系统中,经常面临着"一系列相互依赖的对象"的创建工作:同时由于需求的变化,往往存在着更多系列对象的创建工作. 如何应对这种变化? 如何绕过常规的对象的创建方 ...
- 趣谈设计模式 | 工厂模式(Factory):利用工厂来创建对象
文章目录 案例:外设店铺 简单工厂 工厂方法 抽象工厂 总结 要点 三类工厂模式的特点 三种工厂模式的适用场景 完整代码与文档 工厂模式模式是创建型模式中较为常用的一个,它并不是一个模式,而是三种功能 ...
- springboot工厂模式_最新整理138道阿里、快手等大厂面试题解析:基础+Spring+并发+JVM+设计模式+缓存...
这些题目都是阿里.百度.美团.快手等一线互联网公司面试被问到的题目.熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率,希望可以帮助大家,祝大家求职顺利! Java集合22题 ArrayList ...
- 笔记:设计模式(3)-Abstract Factory抽象工厂模式
工厂模式的起源 1.变化点在"对象的创建",因此就封装"对象创建": 2.面向接口编程,依赖接口,而非依赖实现. 动机(Motivation) 在系统中,经 ...
最新文章
- 利用jsoncpp将json字符串转换为Vector
- mysql的检查点_转载一篇关于mysql检查点的文章
- Vue.js 学习笔记 第5章 内置指令
- 装修(十三天,面板又换错了,大理石空鼓)
- POJ - 2559 Largest Rectangle in a Histogram(笛卡尔树,单调栈实现)
- jpa原生query_JPA执行原生SQL语句
- 用微服务和容器替换旧版Java EE应用程序服务器
- pl/sql中的赋值运算符_如何在SQL中使用AND / OR运算符?
- 零基础、转行学习Python是否还在纠结?这里告诉你答案!
- SpringClould之Eureka原理详解
- 西门子g120变频器接线图_西门子变频器调试软件汇总starter,starterdrive,v-assistant
- 免费且好用的UML工具推荐
- 边缘计算研究热点地图
- [electron]Electron安装报错connect ETIMEDOUT
- cmd导入数据到Oracle,oracle在cmd下通过命令导入导出数据
- WSL是什么? Windows Subsystem for Linux (WSL)
- 在屏幕坐标和窗口坐标之见的转换
- Debian11(Bullseye)系统安装docker及启动失败问题解决
- AIX操作系统vi命令的使用方式
- linux fdisk调整root大小,Linux下分区大小改变及fdisk应用
热门文章
- php v9 如何获取超级管理员权限,Windows8.1如何获取超级管理员权限
- 【C++深度剖析教程36】深入理解函数模板
- 七夕秀恩爱新姿势!这波操作我给十分!
- shell 提示符个性化设置
- 表现与数据分离;前台MVC
- 朝花夕拾——finally/final/finalize拨云雾见青天
- 51Nod--1100-斜率最大
- eveningplan
- leetcode之回溯backtracing专题1
- [Leedcode][JAVA][第983题][最低票价][动态规划]