在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。
桥接模式将抽象部分与它的实现部分分离开来,使他们都可以独立变化,它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。
下面我们就通过桥接模式来创建不同颜色不同形状的图形。
桥接模式的实现:
//颜色接口
public interface Color {
//对传入的图形上色
public void colorByShape();
}
//红色
public class Red implements Color {
@Override
public void colorByShape() {
System.out.print("红色的");
}
}
//绿色
public class Green implements Color {
@Override
public void colorByShape() {
System.out.print("绿色的");
}
}
//彩色
public class Rainbow implements Color {
@Override
public void colorByShape() {
System.out.print("彩色的");
}
}
//形状抽象类
public abstract class Shape {
Color color;
public abstract void draw(); //画形状
public void setColor(Color color) {
this.color = color;
}
}
//圆形
public class Circle extends Shape {
@Override
public void draw() {
this.color.colorByShape();
System.out.println("圆形的");
}
}
//三角形
public class Triangle extends Shape {
@Override
public void draw() {
this.color.colorByShape();
System.out.println("三角形的");
}
}
//矩形
public class Rectangle extends Shape {
@Override
public void draw() {
this.color.colorByShape();
System.out.println("矩形的");
}
}
public class BridgeMain {
public static void main(String[] args) {
Color red = new Red(); //红色
Shape circle = new Circle(); //圆形
circle.setColor(red);
circle.draw(); //画红色的圆形
Color rainbow = new Rainbow(); //彩色
Shape triangle = new Triangle(); //三角形
triangle.setColor(rainbow);
triangle.draw(); //画彩色的三角形
}
}
前面的几节供大家参考:
下一节:
装饰器模式:【每天一个java设计模式(九)】 - 装饰器模式
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43598687/article/details/122073189
内容来源于网络,如有侵权,请联系作者删除!