桥接模式——多层分支也不怕
来源:互联网 发布:股票佣金万2怎么算法 编辑:程序博客网 时间:2024/04/28 22:18
在编程中,我们会经常遇见多层级分支的情况,显然用继承是不合适的,子类和父类的耦合过高会给后期代码的维护带来极大的麻烦,为了解决这个问题,我们可以使用桥接模式。简单来说,桥接模式就是将每个分支单独分开,然后通过委托调用的方式实现桥接。下面通过一个例子来演示桥接模式的用法。
在不同的系统中,系统服务的运行是不一样的,而不同的软件又依赖不同的服务。假设现在我们有ios和android两个系统,有wlan和media两个系统服务,有美颜相机,本地视频播放器,微信,优酷视频4个app,美颜相机和本地视频播放器依赖media服务,微信和优酷视频依赖wlan服务。可以看出,我们将会有三个分支,层级依次是:系统->服务->软件,每个分支包含一个抽象类和具体类。
首先定义系统层级的分支:
abstract class system{ public $service; //设置系统想要启动的服务 function setService(service $service){ $this->service=$service; } abstract function run();}class ios extends system { function run() { echo "ios:<br>"; //启动服务 $this->service->start(); }}class android extends system { function run(){ echo "android:<br>"; $this->service->start(); }}
定义系统服务层级分支:
abstract class service{ public $app; //设置依赖于该服务且要运行的软件 function setApp(app $app){ $this->app=$app; } abstract function start();}class wlan extends service { function start() { echo "开启wlan服务<br>"; //运行软件 $this->app->run(); }}class media extends service { function start() { echo "开启多媒体服务<br>"; $this->app->run(); }}
定义app层级分支
abstract class app{ abstract function run();}class meiyan extends app { function run() { echo "运行美颜相机<br>"; }}class wechat extends app { function run() { echo "运行微信<br>"; }}class youku extends app { function run() { echo "运行优酷视频<br>"; }}class localPlayer extends app { function run() { echo "运行本地播放器<br>"; }}
$ios=new ios();$android=new android();$wlan=new wlan();$media=new media();$youku=new youku();$meiyan=new meiyan();//设置ios系统要启动的服务和运行的软件$ios->setService($wlan);$wlan->setApp($youku);//设置android系统要启动的服务和运行的软件$android->setService($media);$media->setApp($meiyan);$ios->run();echo "<hr>";$android->run();
运行结果如图:
当我们需要在对应的层级增加分支时,只需要添加对应的继承抽象层级类的子类即可,当需要添加层级的时候,我们只需要在上一层级中添加新层级类型的对象属性和设置该对象属性的方法,然后在上一层级的运行方法中在运行上一层级的处理代码后添加调用新层级运行方法。
当你的代码中需要处理多层级分支的情况时,记得桥接模式。
0 0
- 桥接模式——多层分支也不怕
- 照片墙的Adapter——Android照片墙应用实现,再多的图片也不怕崩溃
- XSS注入我也不怕不怕啦——PHP从框架层面屏蔽XSS的思考和实践
- 男人在苦也不怕
- 风再大,天儿再冷,我也不怕了!!!
- 我怕有一天,也不相信爱情
- 建立虚拟机快照,手残党也不怕
- 没有规则的变动,也不怕了
- 导言——关于分支模式
- 类型类 V.S. 桥接模式:撞衫不可怕,谁丑谁尴尬
- 【GOF23设计模式】_桥接模式_多层继承结构JAVA238
- 分支11 —— 分支17、分支19、分支20
- 酒后驾车也不怕 未来汽车时代不需要司机(组图)
- 不需要故意走弯路,但也不要害怕走弯路
- 无视百度需要文库积分才能下载PDF也不怕
- 高效抽取loading,再多的加载页面也不怕
- 高效抽取loading,再多的加载页面也不怕
- 被脱裤也不怕,密码安全可以这样保障
- 高峰论坛:高级招聘面试技巧(广州站)
- [内核编程] VS2013 WDK8.1 开发,调试驱动(xp win7 亲测)
- VMware+Windbg+Win7 内核驱动调试 ----(环境搭建)
- Spring事务管理
- win系统下无法ping通linux,或是linux无法ping通win系统
- 桥接模式——多层分支也不怕
- sql:ORA-00979:不是GROUP BY 表达式
- java基础_day01
- Struts2 2.5.2的套路
- uva 10327 相邻数字交换排序法
- 不确定性学习(2)
- 解决ng-repeat无法直接显示API返回的url图片
- Android自定义蜂窝图实现
- 【HFUTXC】1003.回文数