桥接模式用于将抽象部分与其实现部分分开,使其可以独立变化。这句话不太好理解。让我简单地翻译一下。大概意思就是解耦一个事物二维的变化。让我们以画笔和蜡笔为例。假设我们需要大中小三种画笔,可以画出5种不同的颜色。如果我们用蜡笔,我们需要15个。如果我们用画笔,我们只需要3个而已,再加上5种颜料盒就可以了。这里的重点是画笔可以将画笔的型号和颜色解耦,让它们独立变化,这就是桥接模式。我们先来看一下UML图:再来看看具体的代码是如何实现的。publicinterfaceColor{Stringdraw();}红色publicclassRedColorimplementsColor{@OverridepublicStringdraw(){return"red";}}定义一个抽象画笔publicabstractclassBrushPen{//桥接画笔和颜色protectedColorcolor;publicvoidsetColor(Colorcolor){this.color=color;}publicabstractvoidoperation();}定义一个小画笔publicclassSmallBrushPenextendsBrushPen{@Overridepublicvoidoperation(){System.out.println(this.color.draw()+"小画笔");}}客户端使用桥接模式publicclassBridgeBrushPenDemo{publicstaticvoidmain(String[]args){BrushPenssmallBrushPen=newSmallBrushPen();//红色小刷smallBrushPen.setColor(newRedColor());smallBrushPen.operation();//绿色小刷smallBrushPen。setColor(newGreen());smallBrushPen。operation();}}总结桥接模式是一种结构模式。当事物涉及多个维度的变化时,使用桥接模式可以大大降低系统的复杂度。这种模式也是我认为最难的设计模式。
