外观模式

原文链接:http://www.orlion.ga/744/

解释:

    通过当得的逻辑和章程的集合前创办简单的外观接口,外观设计模式隐藏了自调用对象的扑朔迷离。

 

代码:

/**
 * 外观模式
 *
 */
 class SwitchFacade
{
    private $_light   = null;       //电灯
    private $_ac      = null;        //空调
    private $_fan     = null;        //电扇
    private $_tv      = null;        //电视

    public function __construct()
    {
        $this->_light = new Light();
        $this->_fan = new Fan();
        $this->_ac = new AirConditioner();
        $this->_tv = new Television();
    }
    /**
     * 晚上开电灯
     *
     */
    public function method1($isOpen =1) {
        if ($isOpen == 1) {
            $this->_light->on();
            $this->_fan->on();
            $this->_ac->on();
            $this->_tv->on();
        }else{
            $this->_light->off();
            $this->_fan->off();
            $this->_ac->off();
            $this->_tv->off();
        }

    }
    /**
     * 白天不需要电灯
     *
     */
    public function method2() {
        if ($isOpen == 1) {
            $this->_fan->on();
            $this->_ac->on();
            $this->_tv->on();
        }else{
            $this->_fan->off();
            $this->_ac->off();
            $this->_tv->off();
        }
    }
}

/******************************************子系统类 ************/
/**
 * 
*/ 
class Light
{   
    private $_isOpen = 0;
    public function on() {
        echo 'Light is open', '<br/>';
        $this->_isOpen = 1; 
    }
    public function off() {
        echo 'Light is off', '<br/>';
        $this->_isOpen = 0;
    }
}

class Fan
{
    private $_isOpen = 0;
    public function on() {
        echo 'Fan is open', '<br/>';
        $this->_isOpen = 1; 
    }
    public function off() {
        echo 'Fan is off', '<br/>';
        $this->_isOpen = 0;
    }
}

class AirConditioner
{
    private $_isOpen = 0;
    public function on() {
        echo 'AirConditioner is open', '<br/>';
        $this->_isOpen = 1; 
    }
    public function off() {
        echo 'AirConditioner is off', '<br/>';
        $this->_isOpen = 0;
    }
}
class Television
{
    private $_isOpen = 0;
    public function on() {
        echo 'Television is open', '<br/>';
        $this->_isOpen = 1; 
    }
    public function off() {
        echo 'Television is off', '<br/>';
        $this->_isOpen = 0;
    }
}
/**
 * 客户类
 *
 */
class client {
    static function open() {
        $f = new  SwitchFacade();
        $f->method1(1);
    }

    static function close() {
        $f = new  SwitchFacade();
        $f->method1(0);
    }
}
client::open();

    代码来:http://blog.csdn.net/hguisu/article/details/7533759,《PHP设计模式》这仍开上吃出底例证跟建造者模式极其像了,而上的例子十分得体,而且原来文讲的也罢不行好。

相关文章