优点:
① 分离抽象接口及其实现部分。提高了比继承更好的解决方案。
② 桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。
缺点:
① 桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。
② 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性。
适用范围:
① 系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性
② 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。
客户端:
Color white = new White(); //创建颜色(白色)
Shape square = new Square(); //创建图形(正方形)
square.setColor(white); //为图形设置颜色
square.draw(); //打印图形 :白色的长方形
一句话概括:将抽象部分与它的实现部分分离,使它们都可以独立地变化
/** * Shape (包含Color属性、draw()方法(调用Color的方法);) Color (含上色方法 bePaint(String shape);) * Circle Rectangle square White Gray Black */