PHP独特学习模式_php设计模式:桥接模式学习心得(附案例代码)

【摘要】

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。下面是php设计模式:桥接模式学习心得(附案例代码),让我们一起来看看php设计模式:桥接模式学习心得(附案例代码)的具体内容吧!

php设计模式:桥接模式学习心得(附案例代码)

interface Shape

{

function fill ();

}

class circleShage implements Shape

{

public function fill ()

{

echo '圆形' . PHP_EOL;

}

}

class SquareShape implements Shape

{

public function fill ()

{

echo '正方形' . PHP_EOL;

}

}

现在你想给形状增加颜色——红色、蓝色。那么,你应该如何做,如果用继承的思想,那么就需要写出四个类,分别如下:class RedCircleShage implements Shape

{

public function fill ()

{

echo '红色圆形' . PHP_EOL;

}

}

class RedSquareShape implements Shape

{

public function fill ()

{

echo '红色正方形' . PHP_EOL;

}

}

class BlueCircleShage implements Shape

{

public function fill ()

{

echo '蓝色圆形' . PHP_EOL;

}

}

class BlueSquareShape implements Shape

{

public function fill ()

{

echo '蓝色正方形' . PHP_EOL;

}

}

但现在如果我想加入新的形状——三角形,新的颜色——黑色以及白色。那么我们就需要12个子类(类爆炸),那么有没有什么好的办法来解决呢?

合成(组合)与聚合

解决上述问题前,我们想理解合成与聚合的含义。

合成聚合原则:尽量使用合成/聚合,尽量不要使用继承。

合成(组合):表示一种整体与部分的关系(强关系),它们具有相同的生命周期,比如人和心脏的关系,心脏是人的一部分。

聚合:表示一种整体与部分的关系(弱关系),表示A对象可以包含B对象,但B对象并不是A对象的一部分。比如,我们上面所说的形状和颜色,形状可以包含颜色,但颜色并不是形状的一部分。

桥接模式,就是使用聚合来对系统进行解耦的。

桥接模式

定义:将抽象部分与它的实现分离,使他们可以独立的变化

上面的定义很难理解,用我们上面的例子就是,一个系统可能有多个角度分类(颜色、形状),每一种分类都可能有变化(新增新的形状和颜色),那么我们就可以用多个角度将系统的实现分离出来,降低他们之间的耦合。

那么如何来实现呢?下面是实现代码:abstract class FShape

{

protected $color = null;

public function __construct(IColor $color)

{

$this->color = $color;

}

public function shape ()

{

echo $this->color->color() . $this->setShape() . PHP_EOL;

}

protected abstract function setShape ();

}

class CircleShape extends FShape

{

protected function setShape ()

{

%E6%91%84%E5%9B%BE%E7%BD%91_500516806.jpg%20 return '圆形';

}

}

class SquareShape extends FShape

{

protected function setShape ()

{

return '正方形';

}

}

interface IColor

{

public function color ();

}

class BlueColor implements IColor

{

public function color ()

{

return '蓝色';

}

}

class RedColor implements IColor

{

public function color ()

{

return '红色';

}

}

测试代码如下:$blueColor = new BlueColor();

$redColor = new RedColor();

$blueCircleShape = new CircleShape($blueColor);

$redCircleShape = new CircleShape($redColor);

$blueSquareShape = new SquareShape($blueColor);

$redSquareShape = new SquareShape($redColor);

$blueCircleShape->shape();

$redCircleShape->shape();

$blueSquareShape->shape();

$redSquareShape->shape();

使用桥接模式后,我们的代码就符合了“开闭原则”, 当有新的形状或颜色加入时,我们只需要添加新的类即可。而不用去修改之前的类。

学习推荐:

php视频教程

mysql视频教程

以上就是php设计模式:桥接模式学习心得(附案例代码)的内容,对PHP感兴趣的小伙伴们可以关注考必过,获取更多PHP前沿资讯和最新技术。最新消息小编会第一时间发布,助力大家考试,加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值