简介
桥接模式就是将多个实体中共同联系的概念进行剥离,使它们单独存在。
非桥接模式
public class BlackDell {
public void print(){
System.out.println("黑色戴尔");
}
}
public class RedDell {
public void print(){
System.out.println("红色戴尔");
}
}
public class BlackLenovo {
public void print(){
System.out.println("黑色联想");
}
}
public class RedLenovo {
public void print(){
System.out.println("红色联想");
}
}
上面的类就是没有使用桥接模式的代码,在不使用桥接模式下,一个品牌下的一种颜色的电脑就需要创建一个新的类,当电脑品牌比较多的时候,创建的类就会非常的多。
桥接模式
颜色
public interface Color {
public String print();
}
public class Red implements Color{
public String print() {
return "红色";
}
}
public class Black implements Color {
public String print() {
return "黑色";
}
}
将电脑颜色和电脑进行剥离,使它们单独存在。
电脑
public abstract class Computer {
public Color color;
public Computer(Color color){
this.color = color;
}
public abstract void print();
}
public class Dell extends Computer {
public Dell(Color color) {
super(color);
}
public void print() {
System.out.println(color.print()+"戴尔");
}
}
public class Lenovo extends Computer{
public Lenovo(Color color) {
super(color);
}
public void print() {
System.out.println(color.print()+"联想");
}
}
定义一个抽象的电脑类,使具体的品牌电脑去继承这个抽象的电脑类,并重写抽象的方法,我们可以看到具体的品牌电脑的构造方法中需要传递一个颜色类型的实例对象,这样我们可以在创建具体品牌的电脑的时候只需要传入具体的颜色就可以创建出需要的颜色的电脑。
测试
public void bridge(){
Computer dell = new Dell(new Red());
dell.print();
}
总结
在非桥接模式下,我们需要去关注整个与我们相关联的部分,在桥接模式下,我们只需要去关注自己。