<?php
/*** MVC思想* 任务: 将商品信息展示出来* 创建服务容器(简称为容器),将对象的创建与使用过程统一管理起来*/// 加载: 模型类
require 'Model.php';// 加载: 视图类
require 'View.php';// 创建服务器容器: 对象管理器
class Container
{// 创建容器池/数组protected $instance = [];// 实现类实例的实例化,并保存到一个数组中public function bind($alias, Closure $process){// 将类的实例化过程绑定/存入到容器中$this->instance[$alias] = $process;}// 将类实例取出来public function make($alias, $params=[]){return call_user_func_array($this->instance[$alias], []);}
}// 将模型和视图绑定到服务容器中
$container = new Container();
// 将模型绑定到容器中, 起一个别名: model
$container->bind('model', function () {return new Model();
});
// 将视图绑定到容器中, 起一个别名: view
$container->bind('view', function () {return new View();
});// 门面Facade, 外观模式, 静态代理
class Facade
{// 容器对象protected static $container = null;// 模型中的数据protected static $data = [];// 初始化方法, 用来给容器对象赋值public static function initialize(Container $container){static::$container = $container;}// 给获取模型数据的getData()方法套一个静态马甲,静态代理public static function getData(){static::$data = static::$container->make('model')->getData();}// 将渲染视图的fetch()方法套一个静态马甲,静态代理public static function fecth(){return static::$container->make('view')->fetch(static::$data);}
}// 声明一个商品类
class Product extends Facade
{// ....
}// 控制器
class Controller
{// 构造方法public function __construct(Container $container){Product::initialize($container);}// 将容器对象注入到index()public function index(){// 1. 获取数据Product::getData();// 2. 渲染模板/视图return Product::fecth();}
}// 客户端调用控制器$controler = new Controller($container);echo $controler->index();

laravel门面模式相关推荐

  1. Laravel 服务提供者和门面模式

    以 Laravel 自带的文件系统为例,在 config/app.php 的配置文件的 providers 数组中,注册了一个服务提供者: IlluminateFilesystemFilesystem ...

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

    简介: 门面模式又称之为外观模式,属于结构型的设计模式. 用于为子系统中的一组接口提供一致的调用方案.门面模式定义了一个高层接口,引入门面角色之后,只需要直接与门面角色交互,降低了系统的耦合度. 适用 ...

  3. 一看就懂!【英雄联盟锐雯】与 Python 详解设计模式之门面模式

    [网络配图] 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结.使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性.设计 ...

  4. JAVA之门面模式概述

    门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式,要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行.门面模式提供一个高层次的接口,使得子系统更易于使用. 医 ...

  5. 14Facade(门面)模式

    技术交流QQ群:1027579432,欢迎你的加入! 1.接口隔离模式 在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题.甚至根本无法实现.采用添加一层间接(稳定)接口来隔离本来互相紧密关联 ...

  6. 三分钟学会《门面模式》

    前言 只有光头才能变强 回顾前面所写过的设计模式: 给女朋友讲解什么是代理模式 包装模式就是这么简单啦 单例模式你会几种写法? 工厂模式理解了没有? 策略模式原来就这么简单! 无论是面试还是个人的提升 ...

  7. 8、Python与设计模式--门面模式

    一.火警报警器(1) 假设有一组火警报警系统,由三个子元件构成:一个警报器,一个喷水器,一个自动拨打电话的装置.其抽象如下: class AlarmSensor:def run(self):print ...

  8. Java 门面模式 浅析

    Java中的门面模式,一般来说他的用途是隐藏一些不希望用户看到的东西,比如方法,变量,并且这些变量是不能够设置成私有的,因为在系统内部有些地方需要调用.在Tomcat的HttpServletReque ...

  9. 《javascript设计模式》笔记之第十章 和 第十一章:门面模式和适配器模式

    第十章:门面模式 一:门面模式的作用 简化已有的api,使其更加容易使用 解决浏览器的兼容问题 二:门面模式的本质 门面模式的本质就是包装已有的api来简化操作   三:门面模式的两个简单例子 下面这 ...

最新文章

  1. CPU 核数与线程数有什么关系?
  2. iOS之UI--转场动画
  3. linux设备模型,bus,device,driver,实验遇到的问题
  4. DNS之三 辅助区域和名称解析过程
  5. 设置跳转到新的actvity之后不可返回
  6. 9.3磁盘及文件系统管理详解
  7. 轻gc和重gc分别在什么时候发生_GC发展与现状
  8. Android动画效果
  9. 测试技术-易用性测试
  10. linux免杀工具,kali 免杀工具shellter安装以及使用
  11. 自然语言处理系统NLP之拼写纠错
  12. Apollo公开课四:感知
  13. 轻松拿到国外主流设计风格的图片素材
  14. css渐变背景色与切角
  15. 关于账本数据库:你想知道的这里都有
  16. Rust FFI 编程 - nix crate
  17. vc excel编程
  18. html标签outclick,vue自定义指令(Directive中的clickoutside.js)的理解
  19. Converting circular structure to JSON
  20. 紫光信息港 软件测试,紫光展锐 信息化软件工程师面经

热门文章

  1. 宽带射频放大器OA4SMM4(1)
  2. 硬币找零 acm入门 day4--动态规划dp第一题
  3. 腾讯通改了服务器IP地址后,只能发送即时消息,不能发送文件
  4. 四阶龙格库塔算法用MATLAB写
  5. 使用vite创建vue项目
  6. [CSDN帮助]勤写勋章说明
  7. 从心出发,华展云2.0荣耀发布
  8. 在快应用中集成华为AGC云存储服务
  9. Android开发:禁用应用分屏和屏幕旋转功能
  10. win10下扩展磁盘空间