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

php开发lamp

《西安--木木》-经历丰富了生活。 架构师QQ群: 246695517

 
 
 

日志

 
 

Facade外观模式  

2018-03-12 14:27:49|  分类: 设计模式--php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


<?php

/**
* Facade外观模式
*/

/**
如果增加一个新的外观类NewEncryptFacade来与FileReader类、
FileWriter类以及新增加的NewCipherMachine类进行交互,
虽然原有系统类库无须做任何修改,但是因为客户端代码中原来针对EncryptFacade类进行编程,
现在需要改为NewEncryptFacade类,因此需要修改客户端源代码。

如何在不修改客户端代码的前提下使用新的外观类呢?
解决方法之一是:引入一个抽象外观类,客户端针对抽象外观类编程,而在运行时再确定具体外观类
*
*
*
*
*/
class FileReader
{
public function Read($fileNameSrc)
{
print("读取文件,获取明文:");
}
}

//CipherMachine:数据加密类,充当子系统类。

class CipherMachine
{
public function Encrypt($plainText)
{
print("数据加密,将明文转换为密文:");

}
}

// FileWriter:文件保存类,充当子系统类。


class FileWriter
{
public function Write($encryptStr, $fileNameDes)
{
print("保存密文,写入文件。");

}
}


//EncryptFacade:加密外观类,充当外观类。


class EncryptFacade
{
//维持对其他对象的引用
private $reader;
private $cipher;
private $writer;

public function __construct()
{
$reader = new FileReader();
$cipher = new CipherMachine();
$writer = new FileWriter();
}

//调用其他对象的业务方法
public function FileEncrypt($fileNameSrc, $fileNameDes)
{
$plainStr = $this->reader->Read($fileNameSrc);
$encryptStr = $this->cipher->Encrypt($plainStr);
$this->writer->Write($encryptStr, $fileNameDes);
}
}



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

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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