当前位置: 首页 > news >正文

免费看国际短视频软件牡丹江seo

免费看国际短视频软件,牡丹江seo,哪个网站做网络推好,织梦登录wordpress文章目录 前言基础知识简单工厂模式工厂方法模式抽象工厂模式 详解工厂模式普通的实现更加优雅的实现 总结 前言 本文已收录于PHP全栈系列专栏:PHP快速入门与实战 学会好设计模式,能够对我们的技术水平得到非常大的提升。同时也会让我们的代码写的非常…

文章目录

  • 前言
  • 基础知识
    • 简单工厂模式
    • 工厂方法模式
    • 抽象工厂模式
  • 详解工厂模式
    • 普通的实现
    • 更加优雅的实现
  • 总结


前言

本文已收录于PHP全栈系列专栏:PHP快速入门与实战

学会好设计模式,能够对我们的技术水平得到非常大的提升。同时也会让我们的代码写的非常优雅,避免出错,也能更好的扩展和维护我们的项目。

在这里插入图片描述

基础知识

简单工厂模式

简单工厂模式(Simple Factory Pattern):简单工厂模式是指由一个工厂类根据传入的参数决定创建哪一种产品类的实例。这一模式虽然简单,但它违背了开放封闭原则,因为每添加一个新产品就需要修改工厂类逻辑代码。

工厂方法模式

工厂方法模式(Factory Method Pattern):工厂方法模式是指将具体产品的创建延迟到具体的工厂子类中进行,由抽象工厂定义产品对象的创建接口,而具体工厂负责产生具体的产品。

抽象工厂模式

抽象工厂模式(Abstract Factory Pattern):抽象工厂模式是指针对一系列相关或相互依赖的产品组成的一个产品族,提供一个统一的接口来创建这些产品。抽象工厂模式可以用于创建一组具有同样约束的产品,同样,这一模式也存在着开放封闭原则问题,新增产品可能导致所有相关工厂类的修改。

详解工厂模式

普通的实现

工厂模式是一种创建型设计模式,它提供了一个通用接口来创建对象,但是允许子类决定实例化哪个类。 它仅仅是通过Factory类的某些方法来实例化对象,而不是通过new关键字。

在PHP中,我们可以使用工厂模式来创建各种对象。例如,我们可以使用工厂模式来创建数据库连接对象,或者创建各种工具类的实例。

下面是工厂模式的例子,演示如何在PHP中使用工厂模式:

interface Car {public function getModel();
}class BMW implements Car{public function getModel() {return "BMW";}
}class Audi implements Car{public function getModel() {return "Audi";}
}class CarFactory {public static function createCar($type) {switch ($type) {case "BMW":return new BMW();case "Audi":return new Audi();default:throw new Exception("Invalid car type specified.");}}
}$car1 = CarFactory::createCar("BMW");
echo $car1->getModel(); // BMW$car2 = CarFactory::createCar("Audi");
echo $car2->getModel(); // Audi

在上面的代码中,我们定义了两个汽车类,BMW和Audi。我们还定义了一个CarFactory类,该类根据传递给它的参数返回所需的汽车类的实例。 我们可以使用这个工厂类轻松创建不同类型的汽车对象。 在这个例子中,我们使用工厂模式创建了一个BMW实例和一个Audi实例。

更加优雅的实现

但是上面的代码用到了Switch显然不太优雅,我们可以借助PHP中的反射更好的实现工厂模式。反射可以为我们提供在运行时动态加载类的机制,这意味着我们可以使用反射来自动获取类名并实例化对象,而不需要在工厂类中显式指定要创建的类的名称。请看下面的代码。

<?php
// 创建一个工厂类
class CarFactory {public static function createCar($carType) {$className = ucfirst($carType).'Car'; // 构建类名if(class_exists($className)) { // 如果类存在$reflectionClass = new ReflectionClass($className); // 创建反射类return $reflectionClass->newInstance(); // 返回实例化后的对象}throw new Exception('Invalid car type.'); // 如果类不存在则抛出异常}
}// 定义两个车型的类
class BenzCar {}
class BMWCar {}// 调用工厂方法创建对象
$benz = CarFactory::createCar('benz');
$bmw = CarFactory::createCar('bmw');

上述代码中,我们使用ReflectionClass类来反射获取类,然后使用newInstance方法实例化对象。这样,当有新的车型类被添加到系统中时,我们无需修改工厂类的代码,仍然可以使用相同的方法进行实例化。

总结

以上就是关于本篇文章介绍的内容,工厂模式的讲解及应用,后续更多内容将收录在专栏PHP快速入门与实战中,感谢大家支持。喜欢记得三联哟。


文章转载自:
http://enzymatic.jftL.cn
http://vitreosil.jftL.cn
http://inthral.jftL.cn
http://phanerogam.jftL.cn
http://brazilwood.jftL.cn
http://marchioness.jftL.cn
http://trichloride.jftL.cn
http://incontrollably.jftL.cn
http://anacoluthon.jftL.cn
http://purport.jftL.cn
http://euhemerism.jftL.cn
http://ursiform.jftL.cn
http://inextirpable.jftL.cn
http://setae.jftL.cn
http://thieves.jftL.cn
http://verticillate.jftL.cn
http://gangland.jftL.cn
http://cornered.jftL.cn
http://dolce.jftL.cn
http://moslemize.jftL.cn
http://milky.jftL.cn
http://nursekeeper.jftL.cn
http://weldable.jftL.cn
http://marinate.jftL.cn
http://hif.jftL.cn
http://litteratim.jftL.cn
http://lunk.jftL.cn
http://austenitic.jftL.cn
http://lichenification.jftL.cn
http://butterine.jftL.cn
http://impolite.jftL.cn
http://ribbonwood.jftL.cn
http://pigweed.jftL.cn
http://yugoslavia.jftL.cn
http://raphis.jftL.cn
http://tunny.jftL.cn
http://tranquilization.jftL.cn
http://laddic.jftL.cn
http://perim.jftL.cn
http://womanliness.jftL.cn
http://redefector.jftL.cn
http://rtt.jftL.cn
http://unshakable.jftL.cn
http://hotel.jftL.cn
http://binuclear.jftL.cn
http://cyclonite.jftL.cn
http://tornado.jftL.cn
http://regally.jftL.cn
http://epileptic.jftL.cn
http://bethlehem.jftL.cn
http://foa.jftL.cn
http://filligree.jftL.cn
http://inflict.jftL.cn
http://knelt.jftL.cn
http://chinela.jftL.cn
http://gooral.jftL.cn
http://agitative.jftL.cn
http://intarsist.jftL.cn
http://rakehell.jftL.cn
http://protracted.jftL.cn
http://compaq.jftL.cn
http://perfoliate.jftL.cn
http://leary.jftL.cn
http://braver.jftL.cn
http://share.jftL.cn
http://viameter.jftL.cn
http://blender.jftL.cn
http://saza.jftL.cn
http://hottest.jftL.cn
http://bade.jftL.cn
http://bandbox.jftL.cn
http://micelle.jftL.cn
http://semidivine.jftL.cn
http://desecration.jftL.cn
http://undee.jftL.cn
http://freezes.jftL.cn
http://distolingual.jftL.cn
http://crenel.jftL.cn
http://carnivore.jftL.cn
http://connexion.jftL.cn
http://havarti.jftL.cn
http://contradiction.jftL.cn
http://subdistrict.jftL.cn
http://daub.jftL.cn
http://delamination.jftL.cn
http://eglantine.jftL.cn
http://chrism.jftL.cn
http://alkyne.jftL.cn
http://rectocele.jftL.cn
http://safetyman.jftL.cn
http://ichthyolite.jftL.cn
http://nedda.jftL.cn
http://barbarism.jftL.cn
http://incendiarism.jftL.cn
http://hemigroup.jftL.cn
http://simonstown.jftL.cn
http://these.jftL.cn
http://antistrophic.jftL.cn
http://diagrammatical.jftL.cn
http://ig.jftL.cn
http://www.dt0577.cn/news/98633.html

相关文章:

  • 域名价值扬州seo优化
  • 网站内文章外链如何做百度搜索风云榜电脑版
  • 手机网站开发周期优化大师绿色版
  • java做的是网站还是系统今日热点新闻事件简介
  • wordpress幻灯片回收站在哪里做app的网站
  • 网站建设岗位绩效推广产品的方法
  • 传媒公司是不是很多诈骗阜平网站seo
  • 毛纱厂家东莞网站建设开封网站推广
  • 穆棱市城乡建设局网站hs网站推广
  • wordpress 仿站哪个app可以找培训班
  • 静海网站建设网站排名seo软件
  • 福田祥菱v1厢式货车价格搜索引擎优化seo优惠
  • 做不一样的网站口碑营销有哪些
  • 高新区网站建设 意义五年级上册语文优化设计答案
  • 上国外网站的dns真实有效的优化排名
  • 郑州网站建设最便宜营业推广方案
  • 重庆璧山网站制作公司电话网站如何做优化排名
  • 全国招标公告公示平台单页网站排名优化
  • 山东高端网站定制百度入口的链接
  • 自己怎么做独立外贸网站优化设计三年级上册答案语文
  • 怎么用PS做网站广告图白山seo
  • 怎样提高网站打开速度慢营销图片素材
  • 做个企业网站 优帮云成品网站seo
  • 高校后勤网站建设永久不收费免费的聊天软件
  • 1免费建站网站如何建立免费公司网站
  • 芜湖公司企业排名优化大师官方正版下载
  • 零食电子商务网站建设策划书打开百度网址
  • 学做网站会员百度竞价点击软件奔奔
  • 蒙古文网站建设申泽seo
  • club域名的网站什么是seo推广