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

张开发
2026/4/15 7:07:19 15 分钟阅读

分享文章

面向对象编程(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强整体-部分关系部分生命周期依赖整体如Car与EngineEngine不能脱离Car存在→ 实心菱形实线。聚合Aggregation弱整体-部分部分可独立存在如Department与Employee→ 空心菱形实线。关联Association一般结构关系如Student↔Course可双向/单向可标注角色、多重性1…*。依赖Dependency临时使用关系如方法参数、局部变量虚线箭头 → 表示“use-a”。泛化Generalization继承关系空心三角实线指向父类Dog→Animal。实现Realization类实现接口空心三角虚线指向接口PaymentService→IPayment。✅SOLID 设计原则SRP单一职责一个类只负责一个功能领域如UserRepository仅处理数据持久化不处理验证。OCP开闭原则对扩展开放对修改关闭通过抽象、策略/模板模式实现。LSP里氏替换子类对象必须能替换父类对象而不破坏程序逻辑禁止在子类中加强前置条件或削弱后置条件。ISP接口隔离客户端不应依赖它不需要的接口拆分胖接口为多个细粒度接口。DIP依赖倒置依赖抽象接口/抽象类而非具体实现高层模块不依赖低层模块二者都依赖抽象。✅GoF 23种设计模式重点9种简析模式类型核心意图典型场景单例创建型保证全局唯一实例控制资源访问配置管理器、日志器、线程池工厂方法/抽象工厂创建型解耦对象创建逻辑支持产品族扩展GUI库WinButton/OSXButton观察者行为型定义一对多依赖状态变更自动通知订阅者事件驱动GUI监听、消息总线策略行为型封装算法族运行时切换行为支付方式Alipay/WechatPay、排序算法装饰器结构型动态添加职责替代继承符合OCPJava I/O流BufferedInputStream、权限增强代理结构型为对象提供代理以控制访问远程代理RMI、虚拟代理延迟加载、保护代理权限校验适配器结构型转换接口使不兼容类协同工作Legacy API包装、第三方SDK适配模板方法行为型定义算法骨架子类重写特定步骤框架流程SpringJdbcTemplate责任链行为型将请求沿链传递各节点决定是否处理审批流、过滤器链Servlet Filter✅MVC 架构模式Model数据与业务逻辑如实体、DAO、ServiceView用户界面HTML、前端组件Controller协调者接收输入、调用Model、更新View⚠️ 注意现代演进为 MVP/MVVM尤其前端MVC 中 View 与 Model 通常不直接通信解耦关键。✅AOP面向切面编程核心思想将横切关注点如日志、事务、安全模块化为切面Aspect通过织入Weaving动态注入目标对象关键概念切点Pointcut、通知AdviceBefore/After/Around、连接点Join Point、织入时机编译期/类加载期/运行期实现Spring AOP基于代理、AspectJ更强大支持字节码增强。✅反射机制Java/C#运行时获取类信息类名、方法、字段、注解、动态创建对象、调用私有方法/访问私有字段应用框架底层Spring IOC、JUnit、序列化、ORMHibernate、注解处理器⚠️ 性能开销 安全风险需setAccessible(true)突破访问控制。✅序列化与反序列化序列化对象 → 字节流/文本JSON/XML/Protobuf用于网络传输或持久化反序列化字节流 → 对象需警惕反序列化漏洞如 JavaObjectInputStream的 gadget 链攻击主流方案JavaSerializable需serialVersionUID、JacksonJSON、Protocol Buffers高效二进制。以上内容构成面向对象高阶能力的知识图谱建议结合 UML 绘图工具如 PlantUML、StarUML实践类图建模并用真实项目如电商订单系统贯穿练习设计模式与 SOLID 原则。

更多文章