最新【源码分析设计模式 12】JDBC中的桥接模式,java高级工程师面试题及答案

Java核心架构进阶知识点

面试成功其实都是必然发生的事情,因为在此之前我做足了充分的准备工作,不单单是纯粹的刷题,更多的还会去刷一些Java核心架构进阶知识点,比如:JVM、高并发、多线程、缓存、Spring相关、分布式、微服务、RPC、网络、设计模式、MQ、Redis、MySQL、设计模式、负载均衡、算法、数据结构、kafka、ZK、集群等。而这些也全被整理浓缩到了一份pdf——《Java核心架构进阶知识点整理》,全部都是精华中的精华,本着共赢的心态,好东西自然也是要分享的

image

image

image

内容颇多,篇幅却有限,这就不在过多的介绍了,大家可根据以上截图自行脑补

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

(3)可动态的切换实现

由于桥接模式实现了抽象和实现的分离,所以在实现桥接模式时,就可以实现动态的选择和使用具体的实现。

(4)实现细节对客户端透明,可以对用户隐藏实现细节。

2、缺点


(1)桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程。

(2)桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围有一定的局限性。

四、桥接模式的应用场景


1、不希望或不适用使用继承的场景

2、接口或抽象类不稳定的场景

3、重用性要求较高的场景

应用实例:

(1)开关。我们可以看到的开关是抽象的,不用管里面具体怎么实现;

(2)手机品牌与手机软件。两者间有一条聚合线,一个手机品牌可以有多个手机软件。

不要一涉及继承就考虑该模式,尽可能把变化的因素封装到最细、最小的逻辑单元中,避免风险扩散。

当发现类的继承有n层时,可以考虑使用该模式。

五、代码实现


1、品牌

package designMode.advance.bridge;

public interface Brand {

void open();

void close();

void call();

}

2、具体品牌

package designMode.advance.bridge;

public class Vivo implements Brand {

@Override

public void open() {

System.out.println(" Vivo手机开机 ");

}

@Override

public void close() {

System.out.println(" Vivo手机关机 ");

}

@Override

public void call() {

System.out.println(" Vivo手机打电话 ");

}

}

package designMode.advance.bridge;

public class XiaoMi implements Brand {

@Override

public void open() {

System.out.println(" 小米手机开机 ");

}

@Override

public void close() {

System.out.println(" 小米手机关机 ");

}

@Override

public void call() {

System.out.println(" 小米手机打电话 ");

}

}

3、手机样式,行为类

package designMode.advance.bridge;

public abstract class Phone {

//组合品牌

private Brand brand;

//构造器

public Phone(Brand brand) {

super();

this.brand = brand;

}

protected void open() {

this.brand.open();

}

protected void close() {

brand.close();

}

protected void call() {

brand.call();

}

}

package designMode.advance.bridge;

public class UpRightPhone extends Phone {

//构造器

public UpRightPhone(Brand brand) {

super(brand);

}

public void open() {

super.open();

System.out.println(" 直立样式手机 ");

}

public void close() {

super.close();

System.out.println(" 直立样式手机 ");

}

public void call() {

super.call();

System.out.println(" 直立样式手机 ");

}

}

package designMode.advance.bridge;

public class FoldedPhone extends Phone {

//构造器

public FoldedPhone(Brand brand) {

技术学习总结

学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。

最后面试分享

大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!

[外链图片转存中…(img-hFL1f93t-1715656822237)]

[外链图片转存中…(img-SoJUjB8T-1715656822237)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值