加载中…
正文 字体大小:

PHP设计模式之:外观模式

(2012-09-14 19:55:24)
标签:

科技

宋体

子系统

外观

模式

分类: PHP设计模式

外观模式:

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

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

模式结构:

PHP设计模式之:外观模式

外观模式就是让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(); 

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有