尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
面向对象六大原则深度解析
Android 面试面向对象六大原则深度解析前言作为一名有多年经验的 Android 开发者在面试中经常会被问到设计原则相关的问题。其中“谈谈你对面向对象六大原则的理解尤其是开闭原则和依赖倒置原则”几乎是必考题。本文结合自己的实战经验对六大原则进行深入剖析并解答一个经典追问“其他五大原则都是开闭原则的体现吗”一、六大原则核心速览面向对象六大设计原则的核心目标只有一个应对软件中的“变化”让代码更易维护、更易扩展。原则核心思想一句话理解开闭原则 (OCP)对扩展开放对修改关闭加功能别改老代码依赖倒置原则 (DIP)依赖抽象而非具体实现面向接口编程里氏替换原则 (LSP)子类必须能无缝替换父类儿子不能坑爹单一职责原则 (SRP)一个类只负责一件事别让类成为“万金油”接口隔离原则 (ISP)接口要小而专一别强迫别人用不需要的方法迪米特法则 (LoD)只和朋友说话减少内部细节暴露二、开闭原则详解面试重点2.1 定义软件实体类、模块、函数应该对扩展开放对修改关闭。核心思想当需求变化时应该通过增加新代码来实现功能而不是修改已有的老代码。改动老代码有引入新 Bug 的风险而稳定运行的代码不应该被频繁触碰。2.2 Android 实战案例案例一自定义 View 扩展系统TextView不支持圆角我们不会去改 SDK 源码而是继承它并重写onDrawpublicclassRoundCornerTextViewextendsTextView{OverrideprotectedvoidonDraw(Canvascanvas){// 通过 Canvas 裁剪实现圆角对原有 TextView 零侵入canvas.clipPath(roundPath);super.onDraw(canvas);}}这就是典型的“对扩展开放对修改关闭”。案例二策略模式处理多类型支付定义支付策略接口每种支付方式独立实现publicinterfacePayStrategy{voidpay(StringorderId,doubleamount,PayCallbackcallback);}publicclassWechatPayimplementsPayStrategy{/*...*/}publicclassAliPayimplementsPayStrategy{/*...*/}新增支付方式时只需新增一个实现类支付管理模块的核心代码完全不动。案例三BaseActivity 模板方法模式publicabstractclassBaseActivityextendsAppCompatActivity{OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(getLayoutResId());initView();initData();}protectedabstractintgetLayoutResId();protectedabstractvoidinitView();protectedabstractvoidinitData();}基类的流程框架对修改关闭子类只需填充具体内容完美符合开闭原则。三、依赖倒置原则详解面试重点3.1 定义高层模块不应该依赖低层模块二者都应该依赖其抽象。 抽象不应该依赖细节细节应该依赖抽象。这条原则彻底颠覆了传统“自顶向下逐层依赖”的设计方式是解耦的核心利器。3.2 Android 实战案例在 MVP 或 MVVM 架构中依赖倒置无处不在// View 层只依赖 Presenter 接口抽象publicclassMainActivityextendsBaseActivityimplementsMainContract.View{privateMainContract.PresentermPresenter;}// Presenter 依赖 Model 接口抽象publicclassMainPresenterimplementsMainContract.Presenter{privateMainContract.ModelmModel;publicMainPresenter(MainContract.Viewview,MainContract.Modelmodel){this.mViewview;this.mModelmodel;}}// Model 的具体实现可以随意替换publicclassMainModelimplementsMainContract.Model{// 可以是网络、数据库、或 Mock 数据}这样做的好处**可测试性**单元测试时轻松 Mock 一个假的 Model**可替换性**换数据库只改 Model 实现View 和 Presenter 无感知四、经典追问其他原则都是开闭原则的体现吗这是一个很有深度的问题。直接回答不完全是但它们是实现开闭原则的核心手段和具体体现。我愿把它们的关系理解为目标和路径。开闭原则是总纲和最终目标其他五大原则是为实现这个目标服务的战术约束。4.1 依赖倒置原则 —— 实现开闭的基石没有依赖倒置开闭原则几乎无从谈起。只有高层和低层都依赖抽象才能在低层变化时不影响高层或者通过扩展新实现来应对变化。4.2 单一职责原则 —— 隔离变化波及开闭原则要求对修改关闭。如果一个类承担了过多职责任何一个职责的变化都可能成为修改它的理由。拆开职责每个类只有一个变化的原因才能做到“改一处而其他不动”。4.3 接口隔离原则 —— 提供精准的扩展粒度臃肿的接口让扩展变味。小而专的接口让新功能的扩展只需实现真正需要的方法这才是“对扩展开放”的最佳姿态。4.4 里氏替换原则 —— 保证扩展安全开闭允许通过子类扩展但如果子类不能无缝替换父类这个“扩展”就会破坏现有逻辑迫使上层为兼容它而修改。LSP 是所有扩展安全运行的基石。4.5 迪米特法则 —— 缩小修改影响面如果一个对象暴露太多内部细节耦合面就大内部变化时所有依赖者都可能要改。迪米特限制知识扩散让变化被限制在小范围内间接支持了“对修改关闭”。五、总结开闭原则是最终愿景是我们追求的理想代码状态。依赖倒置是核心手段通过抽象建立稳定的契约层。单一职责、接口隔离、里氏替换、迪米特法则是具体约束从不同维度保证扩展的可行性与安全性。理解这些原则之间的关系比死记硬背定义重要得多。在实际的 Android 开发中灵活运用它们才能写出经得起需求变更考验的优质代码。如果这篇文章对你有帮助欢迎点赞、收藏、关注你的支持是我持续分享的动力
RELATED

相关推荐

Web开发底层逻辑:MVT架构与URL路由解析

Web开发底层逻辑:MVT架构与URL路由解析

1. 项目概述:为什么一个“老掉牙”的框架概念,至今仍是全栈开发的底层逻辑?你有没有过这种体验:刚学完 HTML、CSS 和 JavaScript,兴致勃勃地写了个个人博客首页,结果发现——想加个“点击加载下一篇文章”功…

📅 2026/10/14 17:34:16
蓝牙5.4音频系统开发:IDC777-1与MKV44F256VLH16实战

蓝牙5.4音频系统开发:IDC777-1与MKV44F256VLH16实战

1. 项目背景与核心组件选型在无线音频传输领域,蓝牙技术始终占据主导地位。随着Bluetooth 5.4标准的推出,特别是LE Audio特性的完善,开发者现在能够构建更高音质、更低功耗的无线音频系统。本项目采用IDC777-1蓝牙模块与MKV44F256VLH16微控制…

📅 2026/11/13 9:54:05
Cisco ACL 配置实战:基于IP与端口的3层访问控制策略

Cisco ACL 配置实战:基于IP与端口的3层访问控制策略

Cisco ACL 配置实战:基于IP与端口的3层访问控制策略在企业网络架构中,不同部门间的服务访问控制是网络安全的核心需求之一。想象这样一个场景:总装分厂的工程师需要查阅零件分厂的工艺文档,但两个分厂间的文件传输服务必须严格隔离…

📅 2026/9/18 17:34:02
MORE NEWS

更多资讯

📰

邵阳电工证换证在哪里怎么报名不怕考不过白交培训费

邵阳电工证换证在哪里怎么报名不怕考不过白交培训费 怕考不过白交培训费?邵阳电工证换证在哪里怎么报名,这事儿得搞清楚。现在电工证换证越来越规范,很多人因为流程不熟悉,要么跑错地方,要么材料不齐,浪费时间和钱。这篇文章就从 怎么报名…

📰

雅安电工证培训有哪些 郑州报考避坑指南

雅安电工证培训有哪些 郑州报考避坑指南 学历不高怕报不上名?别急,你不是一个人在战斗。很多人刚开始接触电工证培训,最大的顾虑就是自己文化程度不高,会不会被拒之门外?其实, 雅安电工证培训有哪些…

📰

岗丰电工证复审怎么网上查询

岗丰电工证复审怎么网上查询 证书过期了不知道怎么复审延期,网上查询渠道又不清楚,真的让人焦头烂额。别急,本文就帮你一步步搞清楚【岗丰电工证复审】该怎么操作,特别是 网上查询 这个关键环节,让你少走弯路。 岗丰电工证复审怎么网上查询?…

📰

你省的电工证能转回来吗?千万别踩坑,假电工证被取保要小心

你省的电工证能转回来吗?千万别踩坑,假电工证被取保要小心 之前考的证在外省能不能转过来?这几乎是每个特种作业人员在换城市、换工作时最头疼的问题。别急,你不是一个人。但千万别踩坑,特别是在 假电工证被取保…

📰

五河低压电工证怎么考郑州报考避坑指南

五河低压电工证怎么考郑州报考避坑指南 怕考不过白交培训费?你不是一个人。很多准备报考五河低压电工证的小伙伴,最大的担心就是花了钱、费了时间,最后却因为各种原因没通过考试。别急,这篇指南不仅告诉你 五河低压电工证怎么考…

📰

自报的电工证有效吗 电子证书怎么查 外省证如何转过来

自报的电工证有效吗 电子证书怎么查 外省证如何转过来 之前考的证在外省能不能转过来?这个困扰了很多正在备考或已经拿到电工证的特种作业人员,尤其是像漯河这类从事公路工程的从业者,常常会担心自己的证书是否被全国认可,是否能顺利转接使用。现在国家…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬