设计模式(七):桥接模式

桥接模式就像一座桥,可以连接两个维度的东西。

桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联取代了传统的多层继承,将类之间的静态继承关系转换为动态的对象组合关系,使得系统更加灵活,并易于扩展,同时有效控制了系统中类的个数

0.商标类接口
public interface Brand {
    void info();
}
1.具体商标类-1
public class Lenovo implements Brand {
    @Override
    public void info() {
        System.out.print("联想");
    }
}
2.具体商标类-2
public class Apple implements Brand {
    @Override
    public void info() {
        System.out.print("苹果");
    }
}
0.抽象电脑类
public abstract class Computer {
	//含有商标类接口
    protected Brand brand;
    public Computer(Brand brand){
        this.brand = brand;
    }
    public void info(){
        brand.info();
    }
}
1.具体电脑类-1
class Desktop extends Computer{
    public Desktop(Brand brand) {
        super(brand);
    }
    @Override
    public void info() {
        super.info();
        System.out.print("台式机");
    }
}
2.具体电脑类-2
class Laptop extends Computer{
    public Laptop(Brand brand) {
        super(brand);
    }
    @Override
    public void info() {
        super.info();
        System.out.print("笔记本");
    }
}

测试类

public class Tes {
    public static void main(String[] args){
        //联想  台式机
        Computer computer = new Desktop(new Lenovo());
        computer.info();

        //苹果 笔记本
        Computer computer2 = new Laptop(new Apple());
        computer2.info();
    }
}

桥接模式的主要缺点如下:
(1)桥接模式的使用会增加系统的理解与设计难度,由于关联关系建立在抽象层,要求开发者一开始就针对抽象层进行设计与编程。
(2)桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性,如何正确识别两个独立维度也需要一定的经验积累。

适用场景:
一个类存在两个(或多个)独立变化的维度,且这两个(或多个)维度都需要独立进行扩展,对于那些不希望使用继承或因为多层继承导致系统类的个数急剧增加的系统,桥接模式尤为适用

你可能感兴趣的:(设计模式)