这期内容当中小编将会给大家带来有关如何在php项目中实现一个桥梁模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强>一、桥梁模式结构图
强>
,
<强>二、桥梁模式中主要角色强>
抽象化(抽象)角色:定义抽象类的接口并保存一个对实现化对象的引用。
修正抽象化(提炼抽象)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。
实现化(实现者)角色:定义实现类的接口,不给出具体的实现。此接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以完全不同。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。
具体实现化(具体实现者)角色:实现实现化角色接口并定义它的具体实现。
<强>三、桥梁模式的优点
强> 1,分离接口及其实现部分
将抽象与实现者分享有助于降低对实现部分编译时刻的依赖性
接口与实现分享有助于分层,从而产生更好的结构化系统
2,提高可扩充性
3,实现细节对客户透明。
<强>四、桥梁模式适用场景强>
1,如果一个系统需要在构件的抽象化和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。
2,设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。
3,一个构件有多于一个的抽象化角色和实现化角色,并且系统需要它们之间进行动态的耦合。
4,虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者。
<强>五、桥梁模式与其它模式强>
<>强抽象工厂模式(抽象工厂模式):>强抽象工厂模式可以用来创建和配置一个特定的桥梁模式。
<>强适配器模式(适配器模式):>强适配器模式用来帮助无关的类协同工作。它通常是在系统设计完成之后才会被使用。然而,桥梁模式是在系统开始时就被使用,它使得抽象接口和实现部分可以独立进行改变。
<强>状态模式(国家模式):强>桥梁模式描述两个等级结构之间的关系,状态模式则是描述一个对象与状态对象之间的关系。状态模式是桥梁模式的一个退化的特殊情况。
<强>六、桥梁模式php示例
强>
& lt; php ?/* * ,*抽象化角色 ,*抽象化给出的定义,并保存一个对实现化对象的引用。 ,*/abstract class  Abstraction { , ,/*对实现化对象的引用,*/,protected imp美元; ,/* * ,*某操作方法 ,*/,public function 操作(),{ ,$ this→imp→operationImp (); ,} } ,/* * ,*修正抽象化角色 ,*扩展抽象化角色,改变和修正父类对抽象化的定义。 ,*/class RefinedAbstraction  extends Abstraction  { , ,public function  __construct (Implementor imp美元),{ ,$ this→imp =,小鬼美元; ,} ,/* * ,*操作方法在修正抽象化角色中的实现 ,*/,public function 操作(),{ ,echo & # 39; RefinedAbstraction  operation & # 39;; ,$ this→imp→operationImp (); ,} } ,/* * ,*实现化角色 ,*给出实现化角色的接口,但不给出具体的实现。 ,*/abstract class  Implementor { ,/* * ,*操作方法的实现化声明 ,*/,abstract public function  operationImp (); } ,/* * ,*具体化角色 ,*给出实现化角色接口的具体实现 ,*/class ConcreteImplementorA  extends Implementor  { ,/* * ,*操作方法的实现化实现 ,*/,public function  operationImp (), { ,echo & # 39; Concrete  implementor A operation & lt; br /祝辞;& # 39;; ,} } ,/* * ,*具体化角色B ,*给出实现化角色接口的具体实现 ,*/class ConcreteImplementorB  extends Implementor  { ,/* * ,*操作方法的实现化实现 ,*/,public function  operationImp (), { ,echo & # 39; Concrete  implementor B operation & lt; br /祝辞;& # 39;; ,} } ,/* * ,*客户端 ,*/class Client  { ,/* * ,* Main 程序。 ,*/,public static  function main (), { ,abstraction 美元;=,new RefinedAbstraction (new ConcreteImplementorA ()); 美元,抽象→操作(); , ,abstraction 美元;=,new RefinedAbstraction (new ConcreteImplementorB ()); 美元,抽象→操作(); ,} } , 客户端:主要(); ?在如何在php项目中实现一个桥梁模式