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

做网站有一个火箭回顶部哈尔滨网页设计模板网站

做网站有一个火箭回顶部,哈尔滨网页设计模板网站,怎样建设网站卖东西,上海网页设计培训机构设计模式 抽象工厂模式单例模式要实现一个单例,需要关注的点有下面几个: 抽象工厂模式 PHP工厂模式是一种可扩展、可维护和可重复使用的方法,旨在提供通用接口,用于创建对象。工厂模式的主要组成部分包括抽象工厂、具体工厂、抽象产品和具体产…

设计模式

  • 抽象工厂模式
  • 单例模式
    • 要实现一个单例,需要关注的点有下面几个:

抽象工厂模式

PHP工厂模式是一种可扩展、可维护和可重复使用的方法,旨在提供通用接口,用于创建对象。工厂模式的主要组成部分包括抽象工厂、具体工厂、抽象产品和具体产品。通过使用工厂模式,可以提高代码复用率和可扩展性,并且可以减少代码耦合度和客户端代码的负担。然而,工厂模式并非适用于所有情况,在使用工厂模式时需要注意局限性和代码复杂性。

示例:

抽象工厂

<?php
namespace App\Design\v1\Msg;/*** @Description 生成消息类的工厂* @Author guo* @Date 2023/10/8 9:38**/
interface MsgFactory
{public function createMsg(): MsgInterFace;
}

抽象对象

<?php
namespace App\Design\v1\Msg;/*** @Description 定义消息需实现的接口* @Author guo* @Date 2023/10/8 9:37**///定义一个消息发送接口
interface MsgInterFace
{public function send($data);
}

具体工厂

<?php
namespace App\Design\v1\Msg;/*** @Description  实现mqtt推送消息的工厂* @Author guo* @Date 2023/10/8 10:55**/
class MqttFactory implements MsgFactory
{public function createMsg(): MsgInterFace{return new MqttMsg();}
}
<?php
namespace App\Design\v1\Msg;/*** @Description  实现email推送消息的工厂* @Author guo* @Date 2023/10/8 10:55**/
class EmailFactory implements MsgFactory
{public function createMsg(): MsgInterFace{return new EmailMsg();}
}

具体对象

<?php
namespace App\Design\v1\Msg;use App\Models\Base\v1\Msg\Msg;/*** @Description* @Author guo* @Date 2023/10/8 10:58**/
class MqttMsg implements MsgInterFace
{public function send($data){//具体实现$msg = new Msg();$msg->sendMsg($data);}
}
<?php
namespace App\Design\v1\Msg;use App\Models\Base\v1\Msg\Msg;/*** @Description* @Author guo* @Date 2023/10/8 10:58**/
class EmailMsg implements MsgInterFace
{public function send($data){//具体实现}
}

单例模式

单例设计模式(Singleton Design Pattern)的意思是:一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例模式。

要实现一个单例,需要关注的点有下面几个:

  • 构造函数需要是 private 访问权限的,这样才能避免外部通过 new 创建实例;
  • 考虑对象创建时的线程安全问题;
  • 考虑是否支持延迟加载;
  • 考虑 getInstance() 性能是否高(是否加锁)。

单例模式又分为饿汉式单例模式和懒汉式单例模式:

  • 饿汉式单例模式:在类加载的时候,instance 静态实例就已经创建并初始化好了,所以,instance 实例的创建过程是线程安全的。不过,这样的实现方式不支持延迟加载实例。采用饿汉式实现方式,将耗时的初始化操作,提前到程序启动的时候完成,这样就能避免在程序运行的时候,再去初始化导致的性能问题。
  • 懒汉式单例模式:相对于饿汉式的优势是支持延迟加载。这种实现方式会导致频繁加锁、释放锁,以及并发度低等问题,频繁的调用会产生性能瓶颈。

实例

class ObjectA {private static $instance = null;public static function getInstance() {if (self::$instance === null) {self::$instance = new self();}return self::$instance;}//私有化构造函数private function __construct() {}//禁止克隆private function __clone() {}
}$objA1 = ObjectA::getInstance();
$objA2 = ObjectA::getInstance();
var_dump($objA1 === $objA2); //bool(true)$objA3 = clone $objA1; //此处报错:Fatal error: Uncaught Error: Call to private ObjectC::__clone() from context ''
var_dump($objA1 === $objA3); //程序不会执行到这里
http://www.yayakq.cn/news/842546/

相关文章:

  • 怎么做打码网站重庆交通网站建设
  • 做平台外卖的网站需要什么资质上海工程咨询协会官网
  • 网站文章怎么做才能被收录个人能接广告联盟吗
  • 网站访问量很大怎么办图片在线制作二维码生成器
  • 网站系统建设项目免费的客户管理软件哪个好用
  • 盐城网站建设效果app在线制作平台有哪些
  • 做第三方网站注意什么意思泉州网站建设 首选猴子网络
  • 找网站公司做网站是怎样的流程百度关键词首页排名怎么上
  • 网站建设中+网页代码乌克兰网站设计
  • 纺织品服装网站建设优化系网站的开发和建设毕业设计
  • 惠州做网站广告扁平化设计风格的网站
  • 网站开发客户需求分析中国十大景观设计公司
  • 昆明网站建设php软件小程序定制
  • 哪个网站跨境电商做的最好如何创办一个网站
  • 单网页网站制作永兴县网站建设推广公司
  • 亳州有做网站的吗广告公司名字
  • 清丰网站建设费用多人在线网站开发
  • 找不同 网站开发什么系统做网站最安全
  • 郑州网站建设公司 艾特合同备案号查询系统
  • 网站建设公司企业网站wordpress修改宽度
  • 响应式网站 cms郑州同济医院收费高吗
  • 营销型网站的具体例子手机网站解决方案
  • 传销公司做网站运营网站改版降权多久恢复
  • 58同城青岛网站建设什么软件可以做app软件
  • 青岛公司网站建设价格高端移动网站建设
  • 网站开发与管理专业wordpress pdf 打印
  • 深圳 网站开发扒网站样式
  • 网站图片切换代码个人网站建什么类型的
  • 家具网站首页模板黄冈做网站的公司
  • 网站后台怎么上传图片网页设计实训报告摘要怎么写