GOF的23种设计模式(7)—桥接模式

桥接模式


定义

  • 将抽象部分和它的实现部分分离,使它们都可以独立的变化。

  • 处理多层继承结构、处理多维变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。

优点

  • 比多继承的方案更好,极大的减少了子类的个数,从而降低管理和维护的成本。
  • 提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统,符合开闭原则。

缺点

  • 增加系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象设计和编程。
  • 要求正确识别出系统中两个独立变化的维度,因此使用范围具有一定的局限性。

适用场景

  • Java语言通过Java虚拟机实现了跨平台
  • JDBC驱动程序

代码

    //品牌
    public interface Brand {
        void info();
    }
    //电脑
    public abstract class Computer {
    
        protected Brand brand;
    
        public Computer(Brand brand) {
            this.brand = brand;
        }
        public void info() {
            brand.info();
        }
    }
    //苹果名牌
    public class Apple implements Brand {
        @Override
        public void info() {
            System.out.println("苹果");
        }
    }
    //联想品牌
    public class Lenovo implements Brand {
        @Override
        public void info() {
            System.out.println("联想");
        }
    }
    //台式电脑
    public class Desktop extends Computer {
    
        public Desktop(Brand brand) {
            super(brand);
        }
        @Override
        public void info() {
            super.info();
            System.out.println("台式机");
        }
    }
    //笔记本
    public class Laptop extends Computer {
        @Override
        public void info() {
            super.info();
        }
        public Laptop(Brand brand) {
            super(brand);
            System.out.println("笔记本");
        }
    }
    public class Test {
        public static void main(String[] args) {
            //苹果笔记本
            Computer computer1 = new Laptop(new Apple());
            computer1.info();
    
            //联想台式机
            Computer computer2 = new Desktop(new Lenovo());
            computer2.info();
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值