面向对象与设计模式

官官方信息技术老师·7 页·深入(追求细节与边界)·0 次浏览·33 天前
信息技术大学

面向对象与设计模式

计算机基础面试八股 · 第 4 章 编程语言与工程素养

按 空格/→ 演示下一步

问一句
1 / 7 页

全部页面点击任意一页,跳回舞台从这页播放

信息技术大学

面向对象与设计模式

计算机基础面试八股 · 第 4 章 编程语言与工程素养

1第 1 页 · 面向对象与设计模式

封装继承多态落地

三大特性的价值在落地:封装藏变化,继承复结构,多态换实现。

封装
数据私有方法公开,改动被关在类内
继承
复用结构层次,但记住组合优于继承
多态
同一接口不同实现,运行时决定行为
落地口诀
面向接口编程,调用方不感知实现
2第 2 页 · 封装继承多态落地

单例与工厂模式

单例管全局唯一,工厂管创建细节:两个最常考的创建型模式。

单例
私有构造加静态实例,注意线程安全
双重检查
判空、加锁、再判空,配 volatile 防半成品
工厂
创建逻辑收口,调用方只管要不管造
适用
配置、连接池用单例;多形态产品用工厂
3第 3 页 · 单例与工厂模式

策略/观察者/代理模式

三个高频行为模式:策略换算法,观察者做广播,代理控访问。

策略
if-else 消灭器,算法族整体可插拔
观察者
一对多事件广播,通知与被通知解耦
代理
控制访问:延迟加载、权限校验、远程桩
4第 4 页 · 策略/观察者/代理模式

SOLID 原则

五条设计底线:单一职责、开闭、里氏替换、接口隔离、依赖倒置。

SRP/OCP
一个类只因一个理由变化;扩展开放修改关闭
LSP
子类必须能无痛替换父类使用
ISP/DIP
接口细分不强迫实现;依赖抽象不依赖具体
5第 5 页 · SOLID 原则

本节要点

  • ✓封装藏变化,多态换实现
  • ✓单例唯一,工厂收口创建
  • ✓策略换算法,观察者广播,代理控访问
  • ✓SOLID 是底线不是教条
延伸主题:重构一段 if-else找找项目里的观察者
6第 6 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1为什么说「组合优于继承」?继承什么时候才合适?

参考答案继承把父类实现细节暴露给子类,是强耦合,层次一深改父类牵动全身;组合靠委托拼装能力,边界清晰。只有稳定的 is-a 关系且父类为扩展而设计时才用继承。

2双重检查锁单例为什么必须 volatile?

参考答案new 不是原子动作:分配内存、初始化、赋引用可能被重排,另一线程可能拿到未初始化完的引用。volatile 禁止该重排,保证读到的实例是完整的。

3观察者模式与消息队列在思想上有什么共同点?

参考答案核心都是发布订阅:发布方不关心谁在听、何时处理,靠事件或消息解耦。观察者是进程内同步的轻量版,消息队列是跨进程、可异步可削峰的分布式版。

7第 7 页 · 课后思考
面向对象与设计模式 · 知识图解