news 2026/5/9 10:52:24

面向对象编程(OOP)及其高级应用的核心知识体系,适用于软件工程、系统设计与架构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面向对象编程(OOP)及其高级应用的核心知识体系,适用于软件工程、系统设计与架构

面向对象编程(OOP)及其高级应用的核心知识体系,适用于软件工程、系统设计与架构。以下是对各要点的精要梳理与关键说明:

封装、继承、多态

  • 封装:隐藏内部实现细节,通过访问控制(private/protected/public)和公共接口(getter/setter、方法)暴露行为;提升安全性与可维护性。
  • 继承:子类复用父类属性与方法(extends/:),支持代码重用与层次建模;注意避免过深继承链。
  • 多态:同一接口/父类型引用可指向不同子类实例,运行时动态绑定(动态分派),体现为“一个接口,多种实现”(如Animal a = new Dog(); a.speak();)。

类与对象

  • 类是抽象模板(定义属性+方法),对象是类的实例(内存中具体存在);类描述“是什么”,对象表示“哪一个”。

抽象类 vs 接口

特性抽象类接口(Java 8+ / C#)
构造器✅ 可有❌ 不可有
成员变量可为任意访问级别,可含具体值默认public static final常量
方法实现可含抽象 + 具体方法Java 8+ 支持default/static方法;C# 支持默认实现(C# 8.0+)
继承限制单继承多实现(类可implements多个接口)
设计意图“is-a”关系,共享核心行为与状态“can-do”能力契约,强调行为规范

UML类图关系(由强到弱)

  • 组合(Composition):强整体-部分关系,部分生命周期依赖整体(如CarEngineEngine不能脱离Car存在)→ 实心菱形+实线。
  • 聚合(Aggregation):弱整体-部分,部分可独立存在(如DepartmentEmployee)→ 空心菱形+实线。
  • 关联(Association):一般结构关系(如StudentCourse),可双向/单向,可标注角色、多重性(1…*)。
  • 依赖(Dependency):临时使用关系(如方法参数、局部变量),虚线箭头 → 表示“use-a”。
  • 泛化(Generalization):继承关系,空心三角+实线,指向父类(DogAnimal)。
  • 实现(Realization):类实现接口,空心三角+虚线,指向接口(PaymentServiceIPayment)。

SOLID 设计原则

  • SRP(单一职责):一个类只负责一个功能领域(如UserRepository仅处理数据持久化,不处理验证)。
  • OCP(开闭原则):对扩展开放,对修改关闭(通过抽象、策略/模板模式实现)。
  • LSP(里氏替换):子类对象必须能替换父类对象而不破坏程序逻辑(禁止在子类中加强前置条件或削弱后置条件)。
  • ISP(接口隔离):客户端不应依赖它不需要的接口(拆分胖接口为多个细粒度接口)。
  • DIP(依赖倒置):依赖抽象(接口/抽象类),而非具体实现;高层模块不依赖低层模块,二者都依赖抽象。

GoF 23种设计模式(重点9种简析)

模式类型核心意图典型场景
单例创建型保证全局唯一实例,控制资源访问配置管理器、日志器、线程池
工厂方法/抽象工厂创建型解耦对象创建逻辑,支持产品族扩展GUI库(WinButton/OSXButton)
观察者行为型定义一对多依赖,状态变更自动通知订阅者事件驱动(GUI监听、消息总线)
策略行为型封装算法族,运行时切换行为支付方式(Alipay/WechatPay)、排序算法
装饰器结构型动态添加职责,替代继承(符合OCP)Java I/O流(BufferedInputStream)、权限增强
代理结构型为对象提供代理以控制访问远程代理(RMI)、虚拟代理(延迟加载)、保护代理(权限校验)
适配器结构型转换接口,使不兼容类协同工作Legacy API包装、第三方SDK适配
模板方法行为型定义算法骨架,子类重写特定步骤框架流程(SpringJdbcTemplate
责任链行为型将请求沿链传递,各节点决定是否处理审批流、过滤器链(Servlet Filter)

MVC 架构模式

  • Model:数据与业务逻辑(如实体、DAO、Service);
  • View:用户界面(HTML、前端组件);
  • Controller:协调者,接收输入、调用Model、更新View;
    ⚠️ 注意:现代演进为 MVP/MVVM(尤其前端),MVC 中 View 与 Model 通常不直接通信(解耦关键)。

AOP(面向切面编程)

  • 核心思想:将横切关注点(如日志、事务、安全)模块化为切面(Aspect),通过织入(Weaving)动态注入目标对象;
  • 关键概念:切点(Pointcut)、通知(Advice:Before/After/Around)、连接点(Join Point)、织入时机(编译期/类加载期/运行期);
  • 实现:Spring AOP(基于代理)、AspectJ(更强大,支持字节码增强)。

反射机制(Java/C#)

  • 运行时获取类信息(类名、方法、字段、注解)、动态创建对象、调用私有方法/访问私有字段;
  • 应用:框架底层(Spring IOC、JUnit)、序列化、ORM(Hibernate)、注解处理器;
  • ⚠️ 性能开销 & 安全风险(需setAccessible(true)突破访问控制)。

序列化与反序列化

  • 序列化:对象 → 字节流/文本(JSON/XML/Protobuf),用于网络传输或持久化;
  • 反序列化:字节流 → 对象(需警惕反序列化漏洞,如 JavaObjectInputStream的 gadget 链攻击);
  • 主流方案:JavaSerializable(需serialVersionUID)、Jackson(JSON)、Protocol Buffers(高效二进制)。
以上内容构成面向对象高阶能力的知识图谱,建议结合 UML 绘图工具(如 PlantUML、StarUML)实践类图建模,并用真实项目(如电商订单系统)贯穿练习设计模式与 SOLID 原则。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 3:13:05

2025_NIPS_MLLM-For3D: Adapting Multimodal Large Language Model for 3D Reasoning Segmentation

MLLM-For3D 文章总结与翻译 一、主要内容总结 1. 研究背景与问题 3D推理分割需基于人类意图和空间推理分割复杂场景中的目标物体,在具身智能、自动驾驶等领域至关重要,但现有方法依赖大量人工标注的⟨3D, 文本⟩配对数据,成本高昂。 现有2D多模态大语言模型(MLLMs)在2D推…

作者头像 李华
网站建设 2026/4/10 3:03:25

保护你的PDF:如何设置文件打开密码

担心发送出去的PDF文件被无关人员打开?给 PDF 设置 “打开密码” 就能完美解决!这个功能可以让文件只有输入正确密码才能查看,从源头阻断未授权访问,是保护敏感文档的重要方法。今天我们就来看看如何给PDF文件设置密码&#xff0c…

作者头像 李华
网站建设 2026/4/10 3:01:48

电网数字化运营可视化大屏系统(Vue3+Three.js前端源码)

温馨提示:文末有联系方式一、纯前端技术栈打造高性能可视化大屏 采用Three.js三维渲染引擎结合Vue3响应式框架,基于Vite构建工具与TypeScrt强类型语言开发,全程零后端耦合,代码结构清晰、可维护性强,适配现代浏览器与大…

作者头像 李华
网站建设 2026/4/10 2:59:21

别再用传统 ERP 了!没 CLI 功能接口的,注定会被 AI 时代所淘汰

AI 浪潮正全面重构企业经营逻辑,数据资产、流程自动化、敏捷响应已成为企业生存发展的核心能力。作为企业数字化的核心枢纽,ERP 系统的架构能力直接决定企业能否抓住 AI 红利。开源智造・Odoo 金牌服务明确指出:缺乏 CLI 命令行接口的传统 ER…

作者头像 李华
网站建设 2026/4/10 2:59:19

AXI协议之写对齐

AXI 总线协议中的写对齐 在 AXI (Advanced eXtensible Interface) 协议中,写操作的数据对齐是一个重要的概念,它主要涉及 地址、数据总线宽度 和 字节选通信号 之间的关系。地址对齐: AXI 协议规定,传输的起始地址必须对齐到数据总…

作者头像 李华