桥接模式

1 基本概念

1、定义

  • 桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。
  • 它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。

2、好处

  • 桥接模式偶尔类似于多继承方案,但是多继承方案违背了类的单一职责原则,复用性比较差,类的个数也非常多,桥接模式是比多继承方案更好的解决方法。极大地减少了子类的个数,从而降低管理和维护的成本。
  • 桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。符合开闭原则,就像一座桥,可以把两个变化的维度连接起来。

3、劣势

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

2 代码

图片说明

  • Brand

    package bridge;
    
    // 品牌
    public interface Brand {
        void info();
    }
  • Apple

    package bridge;
    
    // 苹果品牌
    public class Apple implements Brand {
        @Override
        public void info() {
            System.out.print("苹果");
        }
    }
  • Lenovo

    package bridge;
    
    // 联想品牌
    public class Lenovo implements Brand {
        @Override
        public void info() {
            System.out.print("联想");
        }
    }
  • Computer

    package bridge;
    
    // 抽象的电脑类型
    public abstract class Computer {
        // 组合品牌——桥
        protected Brand brand;
    
        public Computer() {
        }
    
        public Computer(Brand brand) {
            this.brand = brand;
        }
    
        public void info() {
            // 自带品牌
            brand.info();
        }
    }
    
    class Desktop extends Computer {
        public Desktop(Brand brand) {
            super(brand);
        }
    
        @Override
        public void info() {
            super.info();
            System.out.println("台式机");
        }
    }
    
    class Laptop extends Computer {
        public Laptop(Brand brand) {
            super(brand);
        }
    
        @Override
        public void info() {
            super.info();
            System.out.println("笔记本");
        }
    }
  • MyTest

    package bridge;
    
    import org.junit.Test;
    
    public class MyTest {
        @Test
        public void test() {
            // 苹果笔记本
            Computer computer1 = new Laptop(new Apple());
            computer1.info();
            // 联想台式机
            Computer computer2 = new Desktop(new Lenovo());
            computer2.info();
        }
    }
全部评论

相关推荐

葬爱~冷少:我当时都是上午刷力扣,下午背八股,有活给我先别急,没活就干自己的事情
点赞 评论 收藏
分享
吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务