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

php开发lamp

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

 
 
 

日志

 
 

桥接模式bridge  

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

  下载LOFTER 我的照片书  |
php设计模式

<?php
/**
* 桥接模式bridge
*/

/**
* 理念:桥接是先有桥,才有两端的东西 适配是先有两边的东西,才有适配器 。
* 桥接是在桥好了之后,两边的东西还可以变化。
* 1. 外观模式Facade出现在项目中期,再优化
* 2. 适配器模式Adapter出现在项目后期,大部分都有了,差的仅仅是接口不同
* 3. 桥接模式Bridge出现在项目前期,你想让你的系统更灵活,更cool
*/

/**
* 在软件开发中如果一个类或一个系统有多个变化维度时,都可以尝试使用桥接模式对其进行设计。
* 桥接模式为多维度变化的系统提供了一套完整的解决方案,并且降低了系统的复杂度。
*/
//像素矩阵类:辅助类,各种格式的文件最终都被转化为像素矩阵,不同的操作系统提供不同的方式显示像素矩阵
class Matrix
{
//此处代码省略
}

//抽象图像类:抽象类
abstract class Image
{
protected $imp;

public function setImageImp(ImageImp $imp)
{
$this->imp = $imp;
}

public abstract function parseFile($fileName);
}

//抽象操作系统实现类:实现类接口
interface ImageImp
{
public function doPaint(Matrix $m); //显示像素矩阵m
}

//Windows操作系统实现类:具体实现类
class WindowsImp implements ImageImp
{
public function doPaint(Matrix $m)
{
//调用Windows系统的绘制函数绘制像素矩阵
print("在Windows操作系统中显示图像:");
}
}

//Linux操作系统实现类:具体实现类
class LinuxImp implements ImageImp
{
public function doPaint(Matrix $m)
{
//调用Linux系统的绘制函数绘制像素矩阵
print("在Linux操作系统中显示图像:");
}
}

//Unix操作系统实现类:具体实现类
class UnixImp implements ImageImp
{
public function doPaint(Matrix $m)
{
//调用Unix系统的绘制函数绘制像素矩阵
print("在Unix操作系统中显示图像:");
}
}

//JPG格式图像:扩充抽象类
class JPGImage extends Image
{
public function parseFile($fileName)
{
//模拟解析JPG文件并获得一个像素矩阵对象m;
$m = new Matrix();
$this->imp->doPaint($m);
print($fileName . ",格式为JPG。");
}
}

//PNG格式图像:扩充抽象类
class PNGImage extends Image
{
public function parseFile($fileName)
{
//模拟解析PNG文件并获得一个像素矩阵对象m;
$m = new Matrix();
$this->imp->doPaint($m);
print($fileName . ",格式为PNG。");
}
}

//BMP格式图像:扩充抽象类
class BMPImage extends Image
{
public function parseFile($fileName)
{
//模拟解析BMP文件并获得一个像素矩阵对象m;
$m = new Matrix();
$this->imp->doPaint($m);
print($fileName . ",格式为BMP。");
}
}

//GIF格式图像:扩充抽象类
class GIFImage extends Image
{
public function parseFile($fileName)
{
//模拟解析GIF文件并获得一个像素矩阵对象m;
$m = new Matrix();
$this->imp->doPaint($m);
print($fileName . ",格式为GIF。");
}
}


//客户端代码
$image = new JPGImage();
$imp = new WindowsImp();
$image->setImageImp($imp);
$image->parseFile("小龙女");


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

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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