php外观模式

CleverCode最近在看外观模式。

1 模式介绍

 为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。

 

2 模式中的角色

         2.1 外观类(Facade):外观类知道哪些子系统类负责处理请求,将客户的请求代理给恰当的子系统对象。

 

  2.2 子系统类集合(SubSystem Classes):子系统类集合实现了子系统的功能,处理外观类对象指派的任务。

 

3 模式结构

 
 
 
 
4 项目
4.1 设计一个商场统一购买家电和家具的场景。
 
4.2 源码设计
<?php
/**
 * php外观模式
 * copyright (c) http://blog.csdn.net/CleverCode
 *
 */

//家电-冰箱
class BingXiang
{/*{{{*/
    public function buy()    
    {
        echo "买冰箱\r\n";
    }
}/*}}}*/

//家电-洗衣机
class XiYiJi
{/*{{{*/
    public function buy()    
    {
        echo "买洗衣机\r\n";
    }
}/*}}}*/

//家具-创
class Chuang
{/*{{{*/
    public function buy()    
    {
        echo "买床\r\n";
    }
}/*}}}*/

//家具-衣柜
class YiGui
{/*{{{*/
    public function buy()    
    {
        echo "买衣柜\r\n";
    }
}/*}}}*/

//商场(Facade)
class ShangChang
{/*{{{*/
    public $bingXiang;
    public $xiYiJi;
    public $chuang;
    public $yiGui;
    public function __construct()    
    {
        $this->bingXiang = new BingXiang();  
        $this->xiYiJi = new XiYiJi();  
        $this->chuang = new Chuang();  
        $this->yiGui = new YiGui();  
    }

    //家电
    public function buyJiaDian()
    {/*{{{*/
        $this->bingXiang->buy();
        $this->xiYiJi->buy();
    }/*}}}*/

    //家具
    public function buyJiaJu()
    {/*{{{*/
        $this->chuang->buy();
        $this->yiGui->buy();
    }/*}}}*/

}/*}}}*/

class Client
{/*{{{*/
    public static function main($argv)    
    {
        $shangChang = new ShangChang();    

        //买家电
        $shangChang->buyJiaDian();

        //买家具
        $shangChang->buyJiaJu();
    }
}/*}}}*/

Client::main($argv);

?>

4.3 结果展示

技术交流

CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值