<bdo id='TLIkC'></bdo><ul id='TLIkC'></ul>

    <small id='TLIkC'></small><noframes id='TLIkC'>

  1. <i id='TLIkC'><tr id='TLIkC'><dt id='TLIkC'><q id='TLIkC'><span id='TLIkC'><b id='TLIkC'><form id='TLIkC'><ins id='TLIkC'></ins><ul id='TLIkC'></ul><sub id='TLIkC'></sub></form><legend id='TLIkC'></legend><bdo id='TLIkC'><pre id='TLIkC'><center id='TLIkC'></center></pre></bdo></b><th id='TLIkC'></th></span></q></dt></tr></i><div id='TLIkC'><tfoot id='TLIkC'></tfoot><dl id='TLIkC'><fieldset id='TLIkC'></fieldset></dl></div>
    1. <tfoot id='TLIkC'></tfoot>

      <legend id='TLIkC'><style id='TLIkC'><dir id='TLIkC'><q id='TLIkC'></q></dir></style></legend>
    2. php设计模式介绍之编程惯用法第1/3页

      时间:2023-12-12
          <tbody id='ZbaRN'></tbody>
        • <small id='ZbaRN'></small><noframes id='ZbaRN'>

            <bdo id='ZbaRN'></bdo><ul id='ZbaRN'></ul>
            <i id='ZbaRN'><tr id='ZbaRN'><dt id='ZbaRN'><q id='ZbaRN'><span id='ZbaRN'><b id='ZbaRN'><form id='ZbaRN'><ins id='ZbaRN'></ins><ul id='ZbaRN'></ul><sub id='ZbaRN'></sub></form><legend id='ZbaRN'></legend><bdo id='ZbaRN'><pre id='ZbaRN'><center id='ZbaRN'></center></pre></bdo></b><th id='ZbaRN'></th></span></q></dt></tr></i><div id='ZbaRN'><tfoot id='ZbaRN'></tfoot><dl id='ZbaRN'><fieldset id='ZbaRN'></fieldset></dl></div>
            <legend id='ZbaRN'><style id='ZbaRN'><dir id='ZbaRN'><q id='ZbaRN'></q></dir></style></legend>

              <tfoot id='ZbaRN'></tfoot>

                这里是对“php设计模式介绍之编程惯用法第1/3页”的完整攻略。

                1. 前言

                该文章主要是对编程中的一些惯用法进行系统的整理和归纳。这些惯用法包括OOP中常用的设计模式、一些小技巧和最佳实践等。通过学习这些惯用法,可以帮助我们更好地编写代码,提高代码的可读性和可维护性。

                2. 设计模式的介绍

                2.1 设计模式的概念
                设计模式是指在特定情境下,经过深思熟虑的一种解决问题的方案。它描述了一个在特定环境下,用于解决某些问题的可复用的解决方案。设计模式可分为三种类型:创建型、结构型和行为型。

                2.2 创建型模式
                创建型模式关注对象的实例化,提供了一种创建对象的最佳方式。常见的创建型模式包括:工厂方法模式、抽象工厂模式、单例模式、建造者模式和原型模式等。

                2.3 结构型模式
                结构型模式关注对象的组合,如何将对象和类组合成更大的结构。常见的结构型模式包括:适配器模式、代理模式、装饰模式、桥接模式、外观模式、享元模式和组合模式等。

                2.4 行为型模式
                行为型模式关注对象间的通信,如何协调对象间的活动。常见的行为型模式包括:命令模式、观察者模式、中介者模式、迭代器模式、解释器模式、访问者模式、责任链模式和备忘录模式等。

                3. 设计模式的示例

                下面是两个常见的设计模式示例。

                3.1 工厂模式
                工厂模式是创建型模式中的一种,在工厂模式中,我们通过调用一个工厂方法来创建对象,避免了直接在客户端代码中进行对象的实例化。

                示例代码:

                interface Shape
                {
                    public function draw();
                }
                
                class Rectangle implements Shape
                {
                    public function draw()
                    {
                        echo "Rectangle::draw() method.\n";
                    }
                }
                
                class Square implements Shape
                {
                    public function draw()
                    {
                        echo "Square::draw() method.\n";
                    }
                }
                
                class ShapeFactory
                {
                    public static function getShape($shapeType)
                    {
                        if ($shapeType == 'Rectangle') {
                            return new Rectangle();
                        } elseif ($shapeType == 'Square') {
                            return new Square();
                        } else {
                            return null;
                        }
                    }
                }
                
                // 使用工厂方法创建对象
                $rectangle = ShapeFactory::getShape('Rectangle');
                $rectangle->draw();
                

                3.2 观察者模式
                观察者模式是行为型模式中的一种,它定义对象之间的一种一对多的依赖关系,当一个对象状态发生改变时,所有依赖于它的对象都得到通知并自动更新自己。

                示例代码:

                interface Observer
                {
                    public function update($temperature, $humidity, $pressure);
                }
                
                interface Subject
                {
                    public function registerObserver(Observer $o);
                
                    public function removeObserver(Observer $o);
                
                    public function notifyObservers();
                }
                
                class WeatherData implements Subject
                {
                    private $observers;
                    private $temperature;
                    private $humidity;
                    private $pressure;
                
                    public function __construct()
                    {
                        $this->observers = array();
                    }
                
                    public function registerObserver(Observer $o)
                    {
                        array_push($this->observers, $o);
                    }
                
                    public function removeObserver(Observer $o)
                    {
                        $key = array_search($o, $this->observers, true);
                        if ($key !== false) {
                            unset($this->observers[$key]);
                        }
                    }
                
                    public function notifyObservers()
                    {
                        foreach ($this->observers as $observer) {
                            $observer->update($this->temperature, $this->humidity, $this->pressure);
                        }
                    }
                
                    public function measurementsChanged()
                    {
                        $this->notifyObservers();
                    }
                
                    public function setMeasurements($temperature, $humidity, $pressure)
                    {
                        $this->temperature = $temperature;
                        $this->humidity = $humidity;
                        $this->pressure = $pressure;
                        $this->measurementsChanged();
                    }
                }
                
                class CurrentConditionsDisplay implements Observer
                {
                    private $temperature;
                    private $humidity;
                
                    public function update($temperature, $humidity, $pressure)
                    {
                        $this->temperature = $temperature;
                        $this->humidity = $humidity;
                        $this->display();
                    }
                
                    public function display()
                    {
                        echo "Current conditions: " . $this->temperature . "F degrees and " . $this->humidity . "% humidity\n";
                    }
                }
                
                // 创建天气数据对象
                $weatherData = new WeatherData();
                
                // 创建当前条件展示对象,并注册到天气数据对象中
                $currentDisplay = new CurrentConditionsDisplay();
                $weatherData->registerObserver($currentDisplay);
                
                // 模拟气象数据的改变
                $weatherData->setMeasurements(80, 65, 30.4);
                
                上一篇:PHP递归的三种常用方式 下一篇:PHP 八种基本的数据类型小结

                相关文章

              1. <small id='uQqwR'></small><noframes id='uQqwR'>

                      <bdo id='uQqwR'></bdo><ul id='uQqwR'></ul>

                    <legend id='uQqwR'><style id='uQqwR'><dir id='uQqwR'><q id='uQqwR'></q></dir></style></legend>
                  1. <i id='uQqwR'><tr id='uQqwR'><dt id='uQqwR'><q id='uQqwR'><span id='uQqwR'><b id='uQqwR'><form id='uQqwR'><ins id='uQqwR'></ins><ul id='uQqwR'></ul><sub id='uQqwR'></sub></form><legend id='uQqwR'></legend><bdo id='uQqwR'><pre id='uQqwR'><center id='uQqwR'></center></pre></bdo></b><th id='uQqwR'></th></span></q></dt></tr></i><div id='uQqwR'><tfoot id='uQqwR'></tfoot><dl id='uQqwR'><fieldset id='uQqwR'></fieldset></dl></div>
                    <tfoot id='uQqwR'></tfoot>