桥接模式(Bridge pattern)
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。
抽象化
存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一些信息,从而把不同的实体当做同样的实体对待。
实现化
抽象化给出的具体实现,就是实现化。
脱耦
所谓耦合,就是两个实体的行为的某种强关联。而将它们的强关联去掉,就是耦合的解脱,或称脱耦。在这里,脱耦是指将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联改换成弱关联。
将两个角色之间的继承关系改为聚合关系,就是将它们之间的强关联改换成为弱关联。因此,桥梁模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立地变化。这就是桥梁模式的用意。
灯
public interface ILight {
public void lightOn();
}
白炽灯
public class IncandescentLight implements ILight{
@Override
public void lightOn() {
System.out.println("白炽灯亮了...");
}
}
水晶灯
public class CrystalLight implements ILight{
@Override
public void lightOn() {
System.out.println("水晶灯亮了...");
}
}
普通开关
public class Switch {
private ILight light;
public Switch(ILight light){
this.light=light;
}
public void switchOn(){
this.light.lightOn();
}
}
遥控开关
public class RemoteSwitch extends Switch{
public RemoteSwitch(ILight light) {
super(light);
}
}
测试
public class Demo {
public static void main(String[] args) {
CrystalLight crystalLight=new CrystalLight();
System.out.println("--普通开关--");
Switch switch1=new Switch(crystalLight);
switch1.switchOn();
System.out.println("--遥控开关--");
RemoteSwitch remoteSwitch=new RemoteSwitch(crystalLight);
remoteSwitch.switchOn();
}
}
分享到:
相关推荐
设计模式 - 桥接模式
java常用设计模式-桥接模式
1. 24设计模式-桥接模式7.实例化2.桥接模式优缺点优:桥接模式概念介绍桥接模式uml图介绍原型模式-实例说明-模拟毛笔原型模式-实例代码DocumentB
设计模式-桥接模式(讲解及其实现代码)
免费提供个人设计模式简易代码,代码结构层次清晰,并且内含基本所有的注释,非常有利于初学者学习设计模式
JAVA-设计模式-结构型模式-桥接模式
c++设计模式-结构型模式-桥接模式;qt工程,c++简单源码; 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度...
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...
初学桥接模式时的具体实现。若理解有误,还请各位大S纠正。
设计模式学习--桥接模式,安装了md就可以直接打开查看
cpp代码-设计模式-桥接模式
设计模式专题之(十)桥接模式---设计模式桥接模式示例代码(python--c++)
设计模式之桥接模式 设计模式之桥接模式 设计模式之桥接模式
设计模式的桥接模式的例子,希望对大家有用
桥接模式 桥接模式
计算机后端-Java-图解java设计模式069 桥接模式(4)-J.avi