[图片] 外观模式(Facade)属于结构型设计模式中的一种,又称之为门面模式。 门面模式隐藏了系统的复杂性,并为客户端提供了一个或多个可以访问系统的接口, 实现客户端与系统的解耦,降低复杂度。 门面模式定义了一个高层接口,这个接口使得子系统更加容易使用,用户只关心接口的使用,不必关心子系统是如何实现的,子系统的复杂关 ..

php 设计模式之门面模式 (Facade)

外观模式(Facade)属于结构型设计模式中的一种,又称之为门面模式。

门面模式隐藏了系统的复杂性,并为客户端提供了一个或多个可以访问系统的接口,
实现客户端与系统的解耦,降低复杂度。

门面模式定义了一个高层接口,这个接口使得子系统更加容易使用,用户只关心接口的使用,不必关心子系统是如何实现的,子系统的复杂关系由门面模式去解决。

门面模式就好比: 你问我 Linux 系统的启动过程是怎样的?我哪里知道啊,我只要按开机键,电脑就开启了。开机键就是电脑提供给用户使用的接口,用户不必关心电脑到底是如何启动的,而电脑本身去控制 Bios 硬件自检,引导加载,内核加载等操作。

举个板栗:

<?php
/**
 * Created by PhpStorm.
 * User: ClassmateLin
 * Date: 2019/9/8
 * Time: 8:52 下午
 * Desc: 外观模式
 */

class Bios {
    public function check()
    {
        echo '硬件自检' . PHP_EOL;
    }

    public function selectStarterDisc()
    {
        echo '选择启动盘' . PHP_EOL;
    }
}

class Grub {
    public function loader()
    {
        echo '加载引导' . PHP_EOL;
    }
}

class Kernel {
    public function loader()
    {
        echo '加载内核' . PHP_EOL;
    }
}

class Init {
    public function init()
    {
        echo 'os初始化' . PHP_EOL;
    }
}

class RunLevel {
    public function start()
    {
        echo '启动指定级别任务' . PHP_EOL;
    }
}



class Computer {
    private $bios;
    private $grub;
    private $kernel;
    private $init;
    private $runLevel;

    public function __construct()
    {
        $this->bios = new Bios();
        $this->grub = new Grub();
        $this->kernel = new Kernel();
        $this->init = new Init();
        $this->runLevel = new RunLevel();
    }

    public function start()
    {
        $this->bios->check();
        $this->bios->selectStarterDisc();
        $this->grub->loader();
        $this->init->init();
        $this->runLevel->start();
    }

    public function program()
    {
        echo "echo 'hello world'";
    }
}

$computer = new Computer();
$computer->start();
$computer->program();

Github设计模式代码库

  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    129 引用 • 400 回帖 • 610 关注
  • 编程基础
    5 引用
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    139 引用 • 105 回帖 • 2 关注
回帖   
请输入回帖内容...