标签:设计模式 桥接模式
<?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