php与设计模式-门面模式

php-门面模式实现 门面模式(外观模式)(Facade Pattern):外部与子系统的通信必须通过一个统一的门面对象进行。为子系统提供了一个一直的对象接口,门面模式定义了一个高层接口,这个接口使得子系统使用起来更加方便。 阅读详情

门面模式

提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。

Demo

/**阿里股票
* Class Ali
*/ 
class Ali 
{ 
   function buy() 
   { 
       echo "买入阿里股票<br/>"; 
   } 

   function sell() 
   { 
       echo "卖出阿里股票<br/>"; 
   } 
} 

/**万达股票
* Class Wanda
*/ 
class Wanda 
{ 
   function buy() 
   { 
       echo "买入万达股票<br/>"; 
   } 

   function sell() 
   { 
       echo "卖出万达股票<br/>"; 
   } 
} 
/**京东股票
* Class Jingdong
*/ 
class Jingdong 
{ 
   function buy() 
   { 
       echo "买入京东股票<br/>"; 
   } 

   function sell() 
   { 
       echo "卖出京东股票<br/>"; 
   } 
}


/**门面模式核心角色
* Class FacadeCompany
*/ 
class FacadeCompany 
{ 
   private $ali; 

   private $wanda; 

   private $jingdong; 

   function __construct() 
   { 
       $this->ali=new Ali(); 
       $this->jingdong=new Jingdong(); 
       $this->wanda=new Wanda(); 
   } 

   function buy() 
   { 
       $this->wanda->buy(); 
       $this->ali->buy(); 
   } 

   function sell() 
   { 
       $this->jingdong->sell(); 
   } 
} 

$lurenA=new FacadeCompany(); 
$lurenA->buy(); 
$lurenA->sell(); 

优势:
* 它可以对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。

     *  它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。松耦合关系使得子系统的组件变化不会影响到它的客户。 Facade模式有助于建立层次结构系统,也有助于对对象之间的依赖关系分层。

     *  Facade模式可以消除复杂的循环依赖关系。这一点在客户程序与子系统是分别实现的时候尤为重要。在大型软件系统中降低编译依赖性至关重要。在子系统类改变时,希望尽量减少重编译工作以节省时间。用Facade可以降低编译依赖性,限制重要系统中较小的变化所需的重编译工作。

     * Facade模式同样也有利于简化系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。

请关注我的订阅号

订阅号.png

门面模式:简化PHP代码的优雅设计模式 门面模式(Facade Pattern)是一种结构型设计模式,它提供了一个简单的接口,用于访问复杂的子系统。通过门面模式,我们可以隐藏系统的复杂性,使得客户端可以更加方便地使用系统功能,同时降低了系统间的耦合度。在PHP中,门面模式被广泛应用于简化代码和提高可维护性。 阅读详情

相关推荐

PHP 门面设计模式在laravel中的应用

PHP 门面设计模式在laravel中的应用

wgchen 588

PHP设计模式实战:装饰器与门面的核心应用

设计模式是面向对象编程中的重要概念,用于解决常见软件设计问题。结构型设计模式中的装饰器模式(Decorator)和门面模式(Facade)分别针对不同场景:装饰器模式通过包装对象实现功能的动态扩展,遵循开放-封闭原则;门面模式则为复杂子系统提供简化接口,降低系统耦合度。在PHP开发中,这两种模式应用广泛,如Laravel框架的中间件机制采用装饰器思想,而服务容器的门面类则体现了门面模式的价值。理解这些模式的核心原理和实现方式,能够帮助开发者构建更灵活、可维护的PHP应用架构,特别是在电商系统、API服务等需

weixin_33552698的博客 169

AOI检测总误判?五大常见问题与实战解决方案

通过对图像质量、检测程序、外界干扰、算法优化以及设备维护和校准的全面把控,企业可以有效降低误判率,提升AOI检测的准确性和可靠性,为工业生产提供更有力的质量保障。表现描述:在AOI检测时,元器件字符因印刷颜色深浅、模糊或受到灰尘干扰等差异,再加上元件库参数未根据实际生产优化,会使系统误将合格元件判定为不合格,严重影响生产效益和产品质量。优化元件库:着重检测关键差异字符,如型号编码等关键信息,剔除不必要字符的检测项,减少干扰,专注于关键识别的准确性。检测时,根据物料信息动态更新检测参数,使系统适应物料变化。

ALeader_AOI的博客 3493

PHP 门面设计模式

PHP 门面设计模式 概念 提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。 本质: 就是化零为整;引入一个中介类,把各个分散的功能组合成一个整体,只对外暴露一个统一的接口。 实例A 其实门面模式这个思想在现实生活中到处都是,几乎我们使用的每个产品都是由很多小的子系统组合而成,但是每个产品都对外提供了统一的用户接口。 比如我们要在淘宝买东西,我基本上只需要鼠标点一些按钮就完成了,但是实际上网站的后台是很多个子系统一起去完成你购买商品的任

wgchen 706

Qt中输出中文出现乱码(win10系统下)

当我刚开始在win10下使用Qt Creator(4.3.0版本)时,遇到过这么个问题:当程序输出中文时,中文会乱码,程序本身的中文未乱码。 乱码截图如下: 我查阅了很多资料,最后在自己的不断的尝试下,解决了乱码问题。进入主题,具体如何解决乱码? ① 首先,我们先设置一下,可以直观在Qt界面上看到文件的编码方式: 点击工具(tool)->选项(option)->文本编辑器->显示->Diplayfileencoding,将其勾选上,点击apply,即可,截图如下...

请叫我皮皮虾的博客 5199

单节锂电池充电管理芯片应用原理阐述及应用领域

当电池电压超过2.9V时,采用恒流模式对电池充电,充电电流由PROG 管脚和GND之间的电阻RPROG确定。充电电压固定于4.2V,而充电电流可通过一个电阻器进行外部设置当充电电流在达到最终浮充电压之后降至设定值1/10时,WD4054将自动终止充电循环。在待机模式中,WD4054 对 BAT 引脚电压进行监控,只有当 BAT 引脚电压低于再充电阈值电压4.1V时(对应电池容量80%~90%),才会开始新的充电循环,重新对电池进行充电,这就避免了对电池进行不必要的反复充电,有效延长电池的使用寿命。

weixin_41141180的博客 941

010-PHP设计模式之门面模式

十、门面模式 10.1 什么是门面模式 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用 10.2 怎么实现门面模式 Facade 门面角色:客户端可以调用这个角色的方法。此角色知晓子系统的所有功能和责任 subsystem 子系统角色:可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。子系统并不知道门面的存在 <?php class Auth { public function auth()

仟玑的博客 485

学术报告系列(二) - 智能自主作业机器人感知与控制技术及发展趋势

收集整理于2022年模式识别高峰论坛湖南大学王耀南院士报告(报名题目:智能自主作业机器人感知与控制技术及发展趋势)

Make something people want. 4696

浅谈PHP设计模式的门面模式

浅谈PHP设计模式的门面模式

weixin_42100387的博客 431

LightTools手动创建菲涅尔透镜的5个实用技巧(附详细步骤图)

本文详细介绍了在LightTools中手动创建菲涅尔透镜的5个核心技巧,包括理解旋转体与折线原理、高效构建多齿轮廓、编辑优化、坐标系定位以及属性设置与验证。通过分步图解和实用策略,帮助用户突破内置工具限制,实现对非标准齿形和复杂光学设计的完全掌控,提升建模精度与仿真效率。

onion的博客 773

【AI智能体】最强AI编程利器 Claude Code 从部署到项目实战详解

最强AI编程利器 Claude Code 从部署到项目实战详解

congge 4508

结构型设计模式

结构型设计模式是一种关注怎样组合类和对象以形成更大的结构,同时简化结构间的关系的设计模式。这些模式帮助确保系统部件间的独立性和可维护性。

m0_67550226的博客 2234

第42章:AI代码生成的质量标准——何时用AI、何时自己写

> - AI代码生成的质量分级标准:可用、稳定、安全、优雅 > - 一个决策矩阵:什么场景适合用AI,什么场景必须人工编写 > - 如何评估AI生成的代码质量(复杂度、可读性、安全性) > - 实战对比:同一需求下AI生成代码 vs 人工编写代码 > - 团队落地:将质量标准集成到Code Review和CI流程 > - 我如何将团队AI代码接受率从70%提升到90%

sfishfly的博客 161

PHP高级实战设计模式

PHP高级实战设计模式 单例模式 工厂模式,工厂方法模式 工厂模式 工厂类 创建 工厂方法模式 观察者模式 适配器模式和策略模式 策略模式 总结:需要增加时,继续增加对应的类 implemets Love 就可以了 门面模式 依赖注入和容器 注入 容器 ...

java火推阳光的博客 302

机器人中的数值优化(十三)——QP二次规划

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 2792

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

php 装饰器模式与门面模式

设计模式的核心价值,从来不是炫技,而是解决实际的业务痛点,写出高内聚、低耦合、易维护的代码。装饰器模式和门面模式,是 Laravel 框架中最常用的两个设计模式,也是 PHP 开发者进阶的必备知识。想给代码加功能又不想改原代码,用装饰器模式想简化复杂的调用流程,用门面模式当你真正理解了它们的核心思想,就会发现,你写的每一行代码,都在无形中用到了它们。

weixin_43781276的博客 350

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

PHP Repository是设计模式吗?从架构模式到实战解析

设计模式是软件工程中反复验证的经典实践,GoF 总结的 23 种模式更是开发者常谈的基础构件,它们解决的是类与类之间的协作方式。而 Repository 并非来自 GoF 体系,它源自 Martin Fowler 的企业应用架构模式,更偏向整体业务模块的组织方式,核心价值在于让领域对象与数据访问解耦。在实际落地中,Repository 往往会结合门面模式、工厂模式、适配器模式与依赖注入,从而为复杂业务提供统一入口、灵活替换底层存储并显著提升可测试性。当业务逻辑复杂到需要领域对象承载,或测试环境需要隔离数据库

weixin_31423955的博客 199

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【四】python门面模式

python设计模式中关于门面设计模式的介绍,详细描述了门面模式的原理以及实现方式;

勿忘初心方得始终 1855

门面设计模式php,学习php设计模式 php实现门面模式(Facade)

这篇文章主要介绍了php设计模式中的门面模式,使用php实现门面模式,感兴趣的小伙伴们可以参考一下一、意图为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层次的接口,使得子系统更加容易使用【GOF95】外部与子系统的通信是通过一个门面(Facade)对象进行。二、门面模式结构图三、门面模式中主要角色门面(Facade)角色:此角色将被客户端调用知道哪些子系统负责处理请求将用户的...

weixin_33404438的博客 219

php设计模式之——门面模式

因为同样的设计思想在不同的场景下人们就会对它有不同的认识,这基本上其实是用来帮助使用者判断在什么场景下该用什么设计模式。 门面模式Facade 今天来学习下门面模式。门面模式是指提供一个统一的接口来调用多个子系统的接口。听起来也没什么复杂的,我来解释下。 理解门面模式 其实门面模式这个思想在现实生活中到处都是,几乎我们使用的每个产品都是由很多小的子系统组合而成,但是每个产品都对外提供了统一的用户接口。 比如我们要在淘宝买东西,我基本上只需要鼠标点一些按钮就完成了,但是实际上网站的后台是很多个子系统

KobeHoo的博客 337

学习php设计模式 php实现门面模式(Facade)

https://www.jb51.net/article/75977.htm 一、意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层次的接口,使得子系统更加容易使用【GOF95】 外部与子系统的通信是通过一个门面(Facade)对象进行。二、门面模式结构图 三、门面模式中主要角色门面(Facade)角色: 此角色将被客户端调用 知道哪些子系统负责处理请求 将用...

静如雪的博客 822

PHP设计模式笔记:使用PHP实现门面模式

PHP设计模式笔记:使用PHP实现门面模式 【意图】 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层次的接口,使得子系统更加容易使用【GOF95】 外部与子系统的通信是通过一个门面(Facade)对象进行。 【门面模式结构图】 门面模式 【门面模式中主要角色】 门面(Facade)角色: 此角色将被客户端调用 知道哪些子系统负责处理

WEB开发游乐场与失落园 687

PHP设计模式之门面模式

门面模式,也叫外观模式。不管是门面还是外观,都是我们对外的媒介,就好像我们的脸面一样。所以,这个模式最大的特点就是要表现的“好看”。怎么说呢?一堆复杂的对象调用,自己都看蒙了,特别是对老系统进行升级维护的时候。用门面来把老系统的功能调用封装起来,在外面看来就和新系统一样,这就是门面模式的用途啦! Gof类图及解释 GoF定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高...

bujidexinq的专栏 533

php中的门面模式Facade

参考:https://www.phpmianshi.com/?id=70 概念 门面模式又叫外观模式,用来隐藏系统的复杂性,提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 构成 1.定义一个(或多个)具备所需接口的新类(门面类Facade) 2.新类门户(门面类Facade)使用原来的系统(包含Hotel,Traffic,ScenicAr..

tiancityycf的专栏 448
上一篇: php与设计模式-代理模式
下一篇: php与设计模式-建造者模式
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值