设计模式——桥接模式

设计模式——桥接模式

先说一下桥接模式的定义以及主要使用场景。
桥接模式是用于把抽象化和实现化解耦,使得二者能够独立变化。桥接模式主要解决的问题是类爆炸问题。

好,下面上货。
设计模式——桥接模式
如上图所示,是一个经典的多态的例子。但是仔细想想,这里面的类太多了,如果颜色和形状分别是两个维度,单独变化,这样子类的数量会少很多的。

我们先用工厂模式对这个图形类表示一下,看如何对画带有颜色的形状。
设计模式——桥接模式

这里使用的是工厂模式,是在创建这个能够画出带有颜色形状的类。工厂模式已经把形状和颜色进行了区分。那么桥接模式是怎么回事呢?
其实,桥接模式是使用了组合的方式来处理接口,这样画图时的信息形状和颜色就可以单独的变化了。如果再有新的形状和新的颜色,变化量不是很大,扩展性会强一些。

如下图所示:
设计模式——桥接模式

这里的Shape是一个抽象类,不是借口。在使用的时候,shape创建时这样的Shape shape = new Rectangle(new RedColorDraw);

这样就可以随意的组合颜色和形状了。