注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Copper peas ' Bolg

Keep On Moving...This Is My Life...

 
 
 

日志

 
 

【原】 PHP 设计模式十七之外观设计模式  

2011-06-22 10:26:54|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

<?php
header("Content-type:text/html;charset=utf-8");
/**
 *  外观设计模式
 * 定义:为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
 * eg:大家熟悉的程序API也就是一个外观设计模式 ,最简单一个类的封装也可以看成是一个外观模式的使用,里面封装了很多功能,提供统一调用方案
 * 外观模式的主要思想是将复杂的细粒度的对象服务包装成简单的易使用的粗粒度的功能服务,也可以理解成n:1:n的数据模型。
 * @anthor Chen Wei Han <csq-3@163.com>
 * @copyright Chen Wei Han 2011-6-22上午09:23:29
 * @link http://csq-3.blog.163.com
 * @package demo
 * @version 1.0
 */


/**
 * 子系统(使用不使用抽象,根据实际情况而定,子系统不一定是相似的)
 */
class A
{
 public function dosomethingA()
 {
  echo '实现A功能';
 }
}

class B
{
 public function dosomethingB()
 {
  echo '实现B功能';
 }
}

class C
{
 public function dosomethingC()
 {
  echo '实现C功能';
 }
}

/**
 * 外观接口
 */
class Facade

 private $a;
 private $b;
 private $c;
 
 public function __construct()
 {
  $this->a = new A();
  $this->b = new B();
  $this->c = new C();
 }
 
 public function ab()
 {
  $this->a->dosomethingA();
  $this->b->dosomethingB();
 }
 
    public function abc()
 {
  $this->a->dosomethingA();
  $this->b->dosomethingB();
  $this->c->dosomethingC();
 }
}

/**
 * 调用
 */
class Client
{
 private $facade;
 
 public function main()
 {
  $this->facade = new Facade();
  
  //使用ab功能
  $this->facade->ab();
  
  //使用abc功能
  $this->facade->abc();
 }
}


$client= new Client();
$client->main();

/*注:如果不使用外观模式,单独调用,会怎么样?肯定很麻烦而且耦合太强。
 *   这样如果需要提供或者修改功能块,只需要修改外观接口类。
 */

  评论这张
 
阅读(131)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018