设计模式之桥接模式
来源:互联网 发布:淘宝手表正品店 编辑:程序博客网 时间:2024/06/16 11:04
桥接模式使得软件系统能轻松地沿多个维度变化,而又不引入额外的复杂度。使抽象化和实现化
解耦,两者可以独立地变化。
遵循原则:
使用聚合关联,不使用继承关联;
抽象和实现解耦;
适用场合:
(1)不希望抽象和实现之间有一个固定的绑定关系;
(2)类的抽象和实现都可以通过子类的方法加以扩充;
(3)对一个抽象的实现部分的修改应该对客户不产生影响。
知识扩展:
JDK中Formatter和Handler就是典型的桥接模式。
体现出该继承才继承,是不是一个谱系的?不是说有一个方法你能用你就继承!
public interface ILight {
public void electricConnected();
public void light();
public void electricClosed();
}
public class CrystalLight implements ILight {
@Override
public void electricClosed() {
System.out.println("水晶灯关闭了");
}
@Override
public void electricConnected() {
System.out.println("水晶灯接通了");
}
@Override
public void light() {
System.out.println("水晶灯亮了");
}
}
public class IncandencentLight implements ILight {
@Override
public void electricClosed() {
System.out.println("白炽灯关闭了");
}
@Override
public void electricConnected() {
System.out.println("白炽灯接通了");
}
@Override
public void light() {
System.out.println("白炽灯亮了");
}
}
通过开关实现客户端与灯之间的连接
public class BaseSwitch {
/**
* 这是桥梁
*/
protected ILight light;
public BaseSwitch(ILight light) {
this.light = light;
}
public final void makeLight(){
this.light.electricConnected();
this.light.light();
this.light.electricClosed();
}
}
远程控制的开关
public class RemoteControlSwitch extends BaseSwitch {
public RemoteControlSwitch(ILight light) {
super(light);
}
public final void makeRemoteLight(int color){
this.light.electricConnected();
this.light.light();
String coloString = "";
switch (color) {
case 0:
coloString = "红色";
break;
case 1:
coloString = "白色";
break;
case 2:
coloString = "暖色";
break;
default:
coloString = "冷色";
break;
}
System.out.println("现在是"+coloString);
this.light.electricClosed();
}
}
测试
public class Client {
public static void main(String[] args) {
ILight incLight = new IncandencentLight();
ILight cryLight = new CrystalLight();
BaseSwitch bs = new BaseSwitch(incLight);
bs.makeLight();
RemoteControlSwitch rcs = new RemoteControlSwitch(cryLight);
rcs.makeRemoteLight(1);
}
}
- 设计模式之桥接模式
- C# 设计模式 之 桥接模式
- c#设计模式之[桥接模式]
- 设计模式之桥接模式
- 设计模式之-Bridge-- 桥接模式
- 设计模式之桥接模式
- 设计模式之桥接模式
- 设计模式之Bridge(桥接模式)
- 设计模式之桥接模式
- 设计模式之Bridge(桥接模式)
- 设计模式之桥接模式BridgePattern
- C# 设计模式之桥接模式
- 设计模式之桥接模式
- 设计模式之桥接模式
- Java 设计模式 之 桥接模式
- Java 设计模式 之 桥接模式
- Java 设计模式 之 桥接模式
- 设计模式之桥接模式
- 每个Android开发者都应该了解的资源列表
- IEnumerable,ICollection,IList,List之间的区别
- react-native laoding native image for android 加载静态图片
- 如何编译包含cocoapods的项目
- Opengl的坐标系统
- 设计模式之桥接模式
- 深入分析JavaWeb Item13 -- jsp指令详解
- Intent android基础二
- 从问题域出发认识Hadoop生态系统
- 用shell批量修改文件名
- java学习总结之多线程
- Android bluetooth介绍(一):基本概念及硬件接口
- zookeeper的Will not attempt to authenticate using SASL (无法定位登录配置)
- leetcode -- Reverse Words in a String -- 太简单,忽略