首先,桥梁结构图
两。桥梁模型中的主要
作用 抽象角色:定义抽象类的接口并
保存对已实现对象的引用。
修改抽象(精化抽象)角色:
扩展抽象角色,将父类定义修改为抽象。
实施者的角色:定义实现类的接口,并没有给出具体的实现。事实上这个接口不一定是抽象的作用,接口定义相同,两接口可以完全不同。实施的作用应该只给底层的
操作,和抽象的作用应该只给一个高水平的操作基于底层操作。
具体的实现(具体实现)的作用:实现角色的接口实现和定义其具体实施。
三、桥梁模型的优越性
1、分离接口及其实现部分
以实现共享的抽象有助于减少编译时间的部分依赖
共享接口和实现有助于分层生成更好的结构化
系统。
2,提高可扩展性
3,向客户了解细节。
四。网桥
模式的应用场景
1,如果系统需要在
组件的抽象和具体角色之间增加更多的灵活性,避免两级之间的静态
连接。
2,设计要求实现角色的任何更改不应
影响客户机,或者实现角色的更改对客户端是完全透明的。
三.组件有一个以上的抽象角色和一个实现角色,系统需要动态地耦合在它们之间。
4,虽然在系统中使用继承没有问题,但是抽象角色和具体角色需要
独立地改变。设计需求需要独立地
管理它们。
五、网桥模式和其他模式
抽象工厂模式(抽象工厂模式):抽象工厂模式可以用来
创建和
配置特定的桥模式。
适配器模式(适配器模式):适配器模式用于帮助不相关的类协同
工作,通常在系统设计完成后使用,但在系统开始时使用桥接模式,允许抽象接口和实现部分独立地改变。
状态模式(状态模式):桥接模式描述两级结构之间的关系,状态模式描述对象与状态对象之间的关系,状态模式是桥梁模式退化的特例。
六。桥接模式PHP示例
< PHP
*抽象角色
*抽象给定的定义,并保存对已实现对象的引用。
* /
抽象类抽象{
要实现对象引用。
保护美元;
*操作
方法 * /
公共
函数操作(){
美元-> -> operationimp(IMP);
}
}
*修改抽象角色
*扩展抽象角色,将父类的定义更改为抽象。
* /
refinedabstraction扩展抽象类{
公共
功能(实现__construct美元IMP){
这个$ = IMP;
}
*
操作方法在修改抽象角色中的应用
* /
公共函数操作(){
echo'refinedabstraction操作;
美元-> -> operationimp(IMP);
}
}
*实施作用
*给角色的实现提供一个接口,但是没有给出具体的实现。
* /
抽象类的实现者{
*操作方法的实现
* /
摘要公共功能operationimp();
}
*具体角色a
*给出角色接口实现的实现。
* /
类concreteimplementora延伸实现{
*实施操作方法
* /
公共功能operationimp(){
echo'concrete实现操作;
}
}
*具体角色B
*给出角色接口实现的实现。
* /
类concreteimplementorb延伸实现{
*实施操作方法
* /
公共功能operationimp(){
echo'concrete B操作的实现;
}
}
*客户端
* /
客户端类{
*主
程序。
* /
公共静态函数main(){
$abstraction = new RefinedAbstraction (New ConcreteImplementorA ());
抽象操作>;
抽象=新refinedabstraction美元(新concreteimplementorb());
抽象操作>;
}
}
客户::主();
>
以上是利用php实现的桥梁模式的代码,并对一些装饰图案的概念进行区分,希望能帮助大家
学习。