面向对象的设计原则

本文详细介绍了面向对象设计的五大原则:单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)和接口隔离原则(ISP),并结合实例解析了每个原则的含义和应用,帮助开发者更好地理解和运用这些设计原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1                 SRP(单一职责原则)

这个原则看起来很简单,就是说一个类只能承担一个职责。

但这里有一个关键:“职责”是如何理解的?

按照汉语的理解,职责其实分为两部分:“职”和“责”。“职”就是这个类是什么,而“责”就是这个类要干什么。

举个例子来说:Door是一个对象,那么它的“职”就是门,“责”就是“开门、关门”等;而Lock的“职”就是锁,“责”就是“上锁、开锁”。如果设计的时候Door同时具有锁的职责,那么Door就违反了SRP原则。

2                 OCP(开闭原则)

相信这是大家见得最多的原则,而且很多人都是这么解释的“对扩展开放、对修改封闭”,更加有人总结为“不修改代码增加新的功能”!

太神奇了,不修改代码增加新的功能!但我不免疑惑:不修改代码怎么增加新的功能呢?难道代码会像生物一样,基因变异?

仔细研究过后才发现,原来是这些总结的人误导了我,根本不是什么“不修改代码增加新的功能”,也不是那个省略了主语的“对扩展开放,对修改封闭”,而是“被调用者开放扩展,调用者封闭修改”

还是举门的例子:Door对象是被其它对象例如人People调用,那么Door就是被调用者,People就是调用者。Door对象可以扩展为“防盗门”、“防火门”、“逃生门”等,但People在调用的时候不需要关注具体是什么门,只需要调用这些门公共的“开门、关门”等操作即可。

3                 LSP (Liskov替换原则)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值