门面模式php,门面模式 php

门面模式php,门面模式 php门面模式 php 门面模式 Facade 又称外观模式 用于为子系统中的一组接口提供一个一致的界面 门面模式定义了一个高层接口 这个接口使得子系统更加容易使用 引入门面角色之后 用户只需要直接与门面角色交互 用户与子系统之间的复杂关系由门面角色来实现 从而降低了系统的耦 classCamera publicfuncti var dump 开 publicfun

门面模式 php

//门面模式 (Facade)又称外观模式,用于为子系统中的一组接口提供一个一致的界面。门面模式定义了一个高层接口,这个接口使得子系统更加容易使用:引入门面角色之后,用户只需要直接与门面角色交互,用户与子系统之间的复杂关系由门面角色来实现,从而降低了系统的耦

class Camera{

public function turnOn(){

var_dump(“开”);

}

public function turnOff(){

var_dump(“关”);

}

public function rotate($degrees){}

}

class Light{

public function turnOn(){

var_dump(“开”);

}

public function turnOff(){

var_dump(“关”);

}

public function changeBulb(){}

}

class Sensor{

public function activate(){}

// diːˈæktɪveɪt 停用

public function deactivate(){}

public function trigger(){}

}

class Alarm{

public function activate(){}

public function deactivate(){}

public function ring(){}

public function stopRing(){}

}

class SecurityFacade{

private $camera1, $camera2;

private $light1, $light2, $light3;

private $sensor;

private $alarm;

public function __construct()

{

$this->camera1 = new Camera();

$this->camera2 = new Camera();

$this->light1  = new Light();

$this->light2  = new Light();

$this->light3  = new Light();

$this->sensor  = new Sensor();

$this->alarm   = new Alarm();

}

public function activate() {

$this->camera1->turnOn();

$this->camera2->turnOn();

$this->light1->turnOn();

$this->light2->turnOn();

$this->light3->turnOn();

$this->alarm->activate();

$this->alarm->activate();

}

public  function deactivate() {

$this->camera1->turnOff();

$this->camera2->turnOff();

$this->light1->turnOff();

$this->light2->turnOff();

$this->light3->turnOff();

$this->alarm->deactivate();

$this->alarm->deactivate();

}

}

$securityObj = new SecurityFacade();

$securityObj->activate();

$securityObj->deactivate();

//string(3) “开”

//string(3) “开”

//string(3) “开”

//string(3) “开”

//string(3) “开”

//string(3) “关”

//string(3) “关”

//string(3) “关”

//string(3) “关”

//string(3) “关”

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229509.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:33
下一篇 2026年3月16日 下午4:33


相关推荐

  • qt qtreewidgetitem_qtwidgets

    qt qtreewidgetitem_qtwidgetsQTreeWidget在添加了数据之后点击扩展箭头展开和收缩的时候会显得卡顿,这个是qt内核的一个bug,正常情况下应该是立即响应的,既然是qt的bug,就只能换种方式实现TreeWidget来解决这个bug,具体办法大致可以有一下几种,具体看需求来决定用哪一种方法更好:如果需求要求实现的TreeWidget不要求是完全的TreeWidget,扩展的层次是有限制的,就是只有2层,3层或者…

    2026年4月20日
    5
  • 原创OpenClaw 开源智能体在多校被禁止安装 并要求卸载清除配置和日志

    原创OpenClaw 开源智能体在多校被禁止安装 并要求卸载清除配置和日志

    2026年3月14日
    2
  • js高级总结

    js高级总结这一周学习了 JS 的高级内容 也察觉到了自己在生活中上应该注意的一些事项 在学习上 本周学习的 js 高级内容包括 原型 闭包 创建模式与继承 线程等等 其中闭包与执行上下文在统计个数的时候有一些相同 闭包是在嵌套内部函数定义执行完时就产生了 不是在调用时 而执行上下文是在调用时产生 定义时不产生 创建模式分为三种 方式一 Object 构造函数模式 套路 先创建空 Object 对象 在添加动态属性 方法 使用场景 起始时不确定对象内部数据 问题 语句太多方式二

    2026年3月17日
    3
  • 选择性忽略的心理_选择性忽略是什么意思

    选择性忽略的心理_选择性忽略是什么意思Python:PyCharm选择性忽略PEP8警告PyCharm是个很强大的pythonIDE,PEP8的告警提示也很好用,但是函数名不能包含大写字母等少数几个规范真心觉得不好,如何取消呢?见下述步骤:在Ignorederrors中添加要忽略的告警ID。注意,要区分是属于coding还是naming。错误代码code samplemessage N801 classnamesshoulduseCapWordsconvention N8

    2022年8月29日
    3
  • 【SpringBoot】36、SpringBoot整合Redis实现发布/订阅

    【SpringBoot】36、SpringBoot整合Redis实现发布/订阅一 简介 1 发布订阅 SUBSCRIBE UNSUBSCRIBE 和 PUBLISH 实现了发布 订阅消息范例 发送者 publishers 不用编程就可以向特定的接受者发送消息 subscribers Rather 发布的消息进入通道 不需要知道有没有订阅者 订阅者发表感兴趣的一个或多个通道 并且只接受他们感兴趣的消息 不管发布者是不是存在 发布者和订阅者的解耦可以允许更大的伸缩性和更多动态的网络拓扑 2 说明本篇文章是继 SpringBoot 三十四 SpringBoot

    2026年3月19日
    3
  • Word 在试图打开文件时遇到错误 文档可能已损坏 解决方法

    Word 在试图打开文件时遇到错误 文档可能已损坏 解决方法我使用的是Office2019的Word打开后缀名为doc的文件。错误信息:有多种原因可导致显示此错误消息。文档可能已损坏。请使用“恢复文本”转换器或“打开并修复”功能。这两种功能都可在“打开”对话框中找到。注意:如果打开的文件是电子邮件的附件,建议先将该文件保存到本地硬盘,然后再尝试恢复或修复该文件。可在“打开”对话框中使用“打开并修复”功能。若要打开并尝试修复,请单击“文件”选项卡,再单击“打开”,然后定位到损坏的文件并单击该文件。此时不要单击对话框右下部的“打开”按钮,而

    2022年6月3日
    72

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号