对面向对象编程原则和设计模式
对面向对象编程原则和设计模式有扎实的理解 招聘要求中提到的**“对面向对象编程原则和设计模式有扎实的理解”,指的是能够编写出高内聚、低耦合、易扩展、易维护**的代码,而不是简单地把代码堆砌在几个类里。 这主要包含 面向对象三大特性、SOLID 五大设计原则 以及 常用设计模式 3 个层面的具体能力。 1. 面向对象三大特性(基础) 封装 (Encapsulation): 隐藏内部实现细节,仅暴露必要的接口(利用 private / public / protected 保护数据)。 继承 (Inheritance): 提取代码复用,建立 “is-a” 的层级关系(警惕过度继承,优先考虑组合)。 多态 (Polymorphism): 基于抽象(接口或抽象类)编写代码,运行时动态绑定具体实现。 2. SOLID 设计原则(核心) 原则 名称 核心思想 反面教材 vs 正确做法 S 单一职责原则 (SRP) 一个类应该只有一个发生变化的原因。 反面:一个 UserService 既处理业务逻辑,又直接拼 SQL 发送邮件。正确:拆分为 UserService、UserRepository、EmailService。 O 开闭原则 (OCP) 对扩展开放,对修改关闭。 扩展新功能时,尽量通过添加新类来实现,而不是修改原有代码。 L 里氏替换原则 (LSP) 子类必须能够替换掉它们的父类(或接口)。 不要在子类重写方法时直接 throw new NotImplementedException()。 I 接口隔离原则 (ISP) 客户端不应该依赖它不需要的接口。 避免定义庞大的“万能接口”,将其拆分为多个职责明确的小接口。 D 依赖倒置原则 (DIP) 高层模块不应该依赖低层模块,二者都应该依赖于抽象。 依赖于 INotificationService 接口,而不是具体的 SmsService 类(配合依赖注入 DI)。 3....