桥接模式
来源:互联网 发布:免费三合一网站源码 编辑:程序博客网 时间:2024/05/04 13:42
桥接模式又称桥梁模式,在软件系统中某些类型由于自身的逻辑,具有两个或多个维度的变化,如何应对这种多维度的变化?桥接模式使得软件系统能够轻松的沿着多个方向变化,而又不引入额外的复杂度。
桥接模式的用意是“将抽象化和实现化脱耦,使得二者可以独自的变化”。
以电灯开关为例:
所有电灯接口:
package com.demo.bridge.light;public interface ILight {public void turnOn();public void keepLight();public void turnOff();}
开关基类:
package com.demo.bridge.baseswitch;import com.demo.bridge.light.ILight;public class BaseSwitch {public ILight light;public BaseSwitch(ILight light){this.light = light;}public final void makeLight(){this.light.turnOn();this.light.keepLight();this.light.turnOff();}}
普通电灯、和可变色电灯实现电灯接口:
package com.demo.bridge.light;public class CommonLighe implements ILight {@Overridepublic void turnOn() {System.out.println("普通白织灯打开");}@Overridepublic void keepLight() {System.out.println("普通白织灯亮开");}@Overridepublic void turnOff() {System.out.println("普通白织灯关闭");}}
package com.demo.bridge.light;public class ChangeableColorLight implements ILight {@Overridepublic void turnOn() {System.out.println("彩灯打开");}@Overridepublic void keepLight() {System.out.println("彩灯亮着");}@Overridepublic void turnOff() {System.out.println("彩灯关闭 ");}}定义一个远程遥控开关,继承开发基类,控制灯色:
package com.demo.bridge.baseswitch;import com.demo.bridge.light.ILight;public class RemoteSwitch extends BaseSwitch {public RemoteSwitch(ILight light) {super(light);}public void remoteColorSwitch(int pa){this.light.turnOn();this.light.keepLight();String color = "";switch(pa){case 1: color = "暖色";break;case 2:color = "蓝色";break;default:color = "黄色";break;}System.out.println("灯变成"+color);this.light.turnOff();}}
测试:
package com.demo.bridge;import com.demo.bridge.baseswitch.BaseSwitch;import com.demo.bridge.baseswitch.RemoteSwitch;import com.demo.bridge.light.ChangeableColorLight;import com.demo.bridge.light.CommonLighe;import com.demo.bridge.light.ILight;public class Client {/** * @param args */public static void main(String[] args) {ILight common = new CommonLighe();ILight changeableColorLight = new ChangeableColorLight();System.out.println("-- 白炽灯 --");BaseSwitch baseSwitch = new BaseSwitch(common);baseSwitch.makeLight();System.out.println("");System.out.println("-- 彩灯 --");RemoteSwitch remoteSwitch = new RemoteSwitch(changeableColorLight);remoteSwitch.remoteColorSwitch(2);}}
控制台结果:
-- 白炽灯 --普通白织灯打开普通白织灯亮开普通白织灯关闭-- 彩灯 --彩灯打开彩灯亮着灯变成蓝色彩灯关闭
0 0
- 设计模式:适配器模式,桥接模式
- 设计模式----桥接模式
- 设计模式---桥接模式
- 结构性模式-桥接模式
- 设计模式:桥接模式
- 设计模式 桥接模式
- 设计模式 - 桥接模式
- 设计模式--桥接模式
- 设计模式--桥接模式
- 设计模式 - 桥接模式
- 设计模式-桥接模式
- 设计模式 - 桥接模式
- 设计模式 - 桥接模式
- 【设计模式-桥接模式】
- 设计模式:桥接模式
- 【设计模式】----桥接模式
- 【设计模式】桥接模式
- 设计模式--桥接模式
- linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)
- MySQL锁的管理机制
- CSDN博客积分计算规则 及 专家认证
- 【Android应用开发技术:网络通信】Android下的JSON处理
- Ubuntu--tar命令
- 桥接模式
- Velocity Java表现层技术
- EventBus使用详解(一)——初步使用EventBus
- CentOS进入单用户模式
- Android开发中出现异常问题的积累
- MongoDB技术之旅-管理
- Notepad++ 快捷键 大全
- 01Android UiAutomator环境配置与编译运行
- Linux find 查找文件