外观模式

外观模式

作者:LAMP小白  点击:1755  发布日期:2012-10-06 10:28:00  返回列表

在必须的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性,用于处理让别人误以为简单的复杂组件

基于外观设计模式的类可能提供执行一个逻辑业务请求的公共接口,为了完成这个单独的业务请求,可能需要执行多个技术逻辑步骤

有意思的地方,其实PHP也可以像C一样限制传入数据类型,如

public function haha(MIO $obj){} //只接受MIO的实例化对象
public function heihei(int $num){} //只接受一个整型

以下为传统的写法

class cd
{
    public $tracks = array();
    public $band = '';
    public $title = '';
    public function __construct($title, $band, $tracks)
    {
        $this-mio_gt;title = $title;
        $this-mio_gt;band = $band;
        $this-mio_gt;traks = $tracks;
    }
}
class CDUpperCase
{
    public static function makeString(CD $cd, $type)
    {
        $cd-mio_gt;$type = strtoupper($cd-mio_gt;$type);
    }
    public static function makeArray(CD $cd, $type)
    {
        $cd-mio_gt;$type = array_map('strtoupper', $cd-mio_gt;$type);
    }
}
class CDMakeXML
{
    public static function create(CD $cd)
    {
        retrun '成功了~';
    }
}
$title = 'haha';
$band = '3';
$tracks = array('aaa','bbb');
$cd = new cd($title, $band, $stracks);
CDUpperCase::makeString($cd, 'title');
CDUpperCase::makeString($cd, 'band');
CDUpperCase::mnakeArray($cd, 'tracks');
echo CDMakeXML::create($cd);

按照外观模式封装后,调用更加傻瓜化了~


class WebServiceFacade
{
    public static function makeXMLCall(CD $cd)
    {
        CDUpperCase::makeString($cd, 'title');
        CDUpperCase::makeString($cd, 'band');
        CDUpperCase::mnakeArray($cd, 'tracks');
        return CDMakeXML::create($cd);
    }
}


上一篇:委托模式 下一篇:快递查询API
0