标签:设计模式 桥接模式
<?php
/**
* 2.2 桥接模式
* 定义:
* 将抽象部分与它的实现部分分离,使它
* 们都可以独立的变化。
* 此模式包含四种角色:
* 1. 抽象被聚合角色
* 职责:它是被包含的类,也就是说
* 此类的对象可以被作为另外
* 一个类的一部分,但是这一
* 部分不是非必需的。它依赖
* 与平台。
* 2. 具体被聚合角色
* 职责:抽象被聚合的具体实现。
* 3. 抽象聚合角色
* 职责:它扮演的是包含容纳的一个
* 角色。可以把它理解为一个
* 平台。比如淘宝,你可以在
* 上面开店,也可以不开店.
* 能不能开店是由这个平台的
* 功能来决定的。
* 4. 具体聚合角色
* 职责:对抽象聚合类的具体实现。
*
* 优点:
* 1. 分离了抽象和实现部分
* 2. 扩展性更好
* 3. 可动态切换实现
* 4. 可减少子类的个数
* 缺点:
* 使用场景:
* 1. 当一个对象有多个变化因素的时候
* ,通过抽象这些变化因素,将依赖
* 修改为抽象依赖;
* 2. 当某个变化因素在多个对象中共享
* 时,我们可以抽象出这个变化因素,
* 然后实现这些不同的变化因素。
* 3. 当我们期望一个对象的多个变化因
* 素可以动态的变化,而且不影响客
* 户的程序的使用时。
*/
/**
* 以手机品牌和软件的方式举例
*/
//手机软件——抽象被聚合角色
abstract class Soft{
abstract public function run();
}
//具体的手机软件,游戏——具体具体被聚合角色
class Game extends Soft{
public function run(){
echo ‘运行手机游戏‘;
}
}
//具体手机软件,通讯录
class AddressList extends Soft{
public function run(){
echo ‘运行手机通讯录‘;
}
}
//手机品牌——抽象聚合角色或称抽象平台角色
abstract class Brand{
abstract public function run(Soft $soft);
}
//具体手机品牌
class Huawei extends Brand{
public function run(Soft $soft){
$soft->run();
}
}
class Apple extends Brand{
public function run(Soft $soft){
$soft->run();
}
}
$hw=new Huawei();
$hw->run(new Game());
$hw->run(new AddressList());
?>本文出自 “一切皆有可能” 博客,请务必保留此出处http://noican.blog.51cto.com/4081966/1614775
标签:设计模式 桥接模式
原文地址:http://noican.blog.51cto.com/4081966/1614775