1、UML类图
2、代码
抽象类
/**
* 抽象类
*/
public abstract class Graphical {
Color color;
public Graphical(Color color){
this.color = color;
}
public void showColor(){
color.color();
}
public abstract void showShape();
}
具体抽象类
/**
* 抽象类具体实现
*/
public class Round extends Graphical{
public Round(Color color) {
super(color);
}
public void showShape(){
System.out.println("这是圆形");
}
}
public class Square extends Graphical{
public Square(Color color) {
super(color);
}
public void showShape(){
System.out.println("这是方形");
}
}
实现类接口
/**
* 实现类接口
*/
public interface Color {
public void color();
}
具体实现类
/**
* 具体实现类
*/
public class Red implements Color{
@Override
public void color() {
System.out.println("这是红色");
}
}
public class Green implements Color{
@Override
public void color() {
System.out.println("这是绿色");
}
}
3、与传统方式相比较
传统方式
1、当还有增图形时还需要再在下面添加两个类
2、违反了单一职责原则
通过使用桥接模式以上问题得以解决
桥接模式
1、将实现与抽象放在不同的类层次中,使得两个层次可以独立改变
2、结构型设计模式
3、基于类的最小设计原则,通过使用封装、聚合以及继承等行为让不同的类承担不同的职责,特点是把抽象和行为的实现独立开来,保持各部分的独立性以及对应他们的功能扩展