天空之城

您当前位置>>首页>>PHP学习>>PHP设计模式>>PHP设计模式之:外观模式

PHP设计模式之:外观模式

来源:新浪博客   时间:2014-03-29 11:22:50   编辑:administrator   阅读数:180

[导读]外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用; 外观模式又称为门面模式,它是一种对象结构型模式。

外观模式:

外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用;

外观模式又称为门面模式,它是一种对象结构型模式。

模式结构:

外观模式就是让client客户端以一种简单的方式来调用比较复杂的系统来完成一件事情;

目的:

1、为一个复杂子系统提供简单的接口

2、减少客户端和子系统的耦合

代码实现:

示例1:

<?php

/1**

 * 外观模式

 * 通过在必须的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性

 */

 

/1**

 * 

 * User类

 * @author lzs

 *

 */

class User

{

protected $userName;

protected $userAge;

 

public function setUserName($userName)

{

return $this->userName = $userName;

}

 

public function setUserAge($userAge)

{

return $this->userAge = $userAge;

}

 

/1**

 * getUser方法

 * 获取用户信息

 */

public function getUserInfo()

{

echo '用户姓名:'.$this->userName.'<br />用户年龄:'.$this->userAge;

}

}

 

/1**

 * UserFacade外观模式类,简化获取用户getUserInfo方法的调用

 */

class UserFacade

{

public static function getUser($userInfo)

{

$User = new User();

$User->setUserName($userInfo['username']);

$User->setUserAge($userInfo['userAge']);

return $User->getUserInfo();

}

}

 

$userInfo = array(

'username' => 'lzs',

'userAge'  => 21,

);

//简化调用类

UserFacade::getUser($userInfo);

 

 

示例2:

<?php

/1**

 * 外观模式

 */

 

/1**

 * 创建多个子系统类

 */ 

 

class SubSystem1

{

public function method1()

{

echo ' subsystem1 method1<br />';

}

}

 

class SubSystem2

{

public function method2()

{

echo ' subsystem2 method2<br />';

}

}

 

class SubSystem3

{

public function method3()

{

echo ' subsystem3 method3<br />';

}

}

 

/1**

 * 与子系统通信的外观类,

 * 外部与一个子系统的通信必须通过一个统一的外观对象进行

 */

class Facade

{

private $object1 = null;

private $object2 = null;

private $object3 = null;

 

public function __construct()

{

$this->object1 = new SubSystem1();

$this->object2 = new SubSystem2();

$this->object3 = new SubSystem3();

}

 

public function methodFirst()

{

echo 'Facade methodFirst<br />';

$this->object1->method1();

$this->object2->method2();

}

 

public function methodSecond()

{

echo 'Facade methodSecond<br />';

$this->object2->method2();

$this->object3->method3();

}

}

 

$objFacade = new Facade();

$objFacade->methodFirst();

$objFacade->methodSecond(); 

PHP设计模式之:外观模式
原文地址: http://blog.sina.com.cn/s/blog_6dbbafe001018w68.html

上一篇:PHP设计模式之:建造者模式
下一篇:MySqlHelper

    just do it
    天空之城天空之城