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();
发布了60 篇原创文章 · 获赞 0 · 访问量 1423

猜你喜欢

转载自blog.csdn.net/ClassmateLin/article/details/100641974
今日推荐