php高级程序设计_模式,框架与测试模式:如何应对“多维度的变化”(图)微信小程序 php框架
2022-08-29
桥接模式:在一个软件系统中,有的类型由于自身的逻辑而发生了二维或多个维度的变化,那么如何应对这种“多维变化”呢?这就是使用桥接模式的地方 - 将抽象与其实现分开php高级程序设计_模式,框架与测试,以便它们可以独立更改。
UML类图:
人物介绍:
() 作用:抽象给定定义并持有对实现对象的引用。
修改()角色:扩展抽象角色php高级程序设计_模式,框架与测试,改变和修改父类对的定义。
() 角色:该角色给出了实现角色的接口,但不给出具体的实现。需要指出的是网站模板,这个接口不一定和抽象角色的接口定义一样,其实两个接口可以有很大的不同。
具体实现(Bus)角色:该角色给出实现角色接口的具体实现。
代码反映:
icar->Run(); echo :在高速公路上。; } } /**乡村街道 * Class Street */ class Street extends AbstractRoad { function Run() { $this->icar->Run(); echo :在乡村街道上。; } } /**抽象汽车接口 * Interface ICar */ interface ICar { function Run(); } /**吉普车 * Class Jeep */ class Jeep implements ICar { function Run() { echo 吉普车跑; } } /**小汽车 * Class Car */ class Car implements ICar { function Run() { echo 小汽车跑; } }
测试代码:
/------------------------桥接模式测试代码------------------ require_once ./Bridge/Bridge.php; $speedRoad=new SpeedRoad(); $speedRoad->icar=new Car(); $speedRoad->Run(); echo
; $=新();$->icar=new Jeep(); $->运行();
适用场景:
1. 如果系统需要在组件的抽象角色和具体角色之间增加更多灵活性,请避免在两个级别之间创建静态链接。
2. 设计要求对实现角色的任何更改都不应影响客户端网站建设,或者对实现角色的更改对客户端是完全透明的。
3.一个组件有多个抽象角色和实现角色,系统需要它们之间的动态耦合。
4. 虽然在系统中使用继承没有问题,但由于抽象角色和具体角色需要独立更改,因此设计要求两者都独立管理。