标签:ide color public system col gre stat extends imp
/** * 桥接模式:按资料说是将抽象和实现分离,这个很难理解,此处不深究定义;下面举个例子说明白 * 如果形状有长方形,正方形,圆形,颜色有红色和绿色,那么他们的组合就有3x2=6种 如果我们定义6个类去实现,那显然不合理,例如增加了一个形状,那就有4x2=8种了, * 伪代码实现上面的方式: public class RedCircle implements Color,Shape{},这样导致2个维度的属性耦合太强了,多层继承了, * 如果将Color维度使用组合的方式作为Shape维度的一个属性,这样就可以减少很多子类了 * 所以,出现了第二种方案,那就是将形状抽象出来,颜色抽象出来,然后颜色以组合的方式引入,这样拓展就可以让两种属性自由组合了,减少了子类的生成 * * */ public abstract class Shape { protected Color color; public Color getColor() { return color; } public void setColor(Color color) { this.color = color; } protected abstract void draw(); } public interface Color { void paint(String shape); } public class Red implements Color { @Override public void paint(String shape) { System.out.println("画红色的"+shape); } } public class Green implements Color { @Override public void paint(String shape) { System.out.println("画绿色的"+shape); } } public class Circle extends Shape { @Override public void draw() { color.paint("圆形"); } } public class Square extends Shape { @Override protected void draw() { color.paint("正方形"); } } public class Test { public static void main(String[] args) { Red red = new Red();//红色 Green green = new Green(); Circle circle = new Circle(); circle.setColor(red);//画红色的圆 circle.draw(); circle.setColor(green);//画绿色的圆 circle.draw(); } }
标签:ide color public system col gre stat extends imp
原文地址:https://www.cnblogs.com/yangxiaohui227/p/10917377.html