面向对象设计的6大原则

https://juejin.im/post/5b9526c1e51d450e69731dc2

 

程序设计原则:SOLID
1:单一职责原则 (Single Responsibility Principle)
  雇员类->属性:名字(Name) 薪水(Salary) 岗位(Position)
  雇员类->方法:做本职工作(- (void)dowork)
**** >> 新加需求。
  a: 计算工资 《-》 会计部门
  b: 升值 《-》 人事部门
**** >> 解决:由于新需求不属于员工的职责。应该新建对应的类别。不应该放入雇工类
  a: 新建会计类,处理工资问题
  b: 新建人事类,处理升值问题

2:开闭原则 OCP  (Open Close Principle)
  课程类->属性 课程名(CourseName)教师名(TeacherName)课程介绍(CourseIntroduce)
**** >> 新加需求
  需要开通:文字课程,音频课程,视频课程, 直播课程
**** >> 解决
  不要再原有的课程类添加属性,而是通过继承创建,文字课程类,音频课程类,视频课程类等等。

3:里氏替换原则  (Liskov Substitution Principle)
  避免继承的滥用。
  子类可以增加自己特有的方法, 也可以实现父类的抽象的方法,但是不能重写父类的方法

4:迪米特法则 (Law Of Demeter)
  最少知道原则
  即不需要返回的数据 就应该返回。
  如:需要学生的姓名,就应该吧学生类返回,而是直接返回名字

5:接口分离原则 (Interface Segregation Principle)
  a:客户端不应该依赖他不需要的接口。
  b:接口应尽可能的少,避免臃肿的接口。

6:依赖倒置原则 (Dependency Inversion Principle)
  针对接口(协议)编程,而不是针对实现变成。
  需求:用代码模拟一个实际项目开发的场景:前端和后端开发人员开发同一个项目。
  生成:FrondEndDeveloper类   - (void)writeJaveScriptCode;  
       BackEndDeveloper类    - (void)writeJaveCode;
  正确的设计:
  @protocol developerProtocol <NSObject>
    - (void)writeCode
  @end
  之后:FrondEndDeveloper类
       BackEndDeveloper类
       继承developerProtocol。最后调用直接调用协议方法
总结:
类的职能应该清晰。接口要避免臃肿。应该基于协议编程。继承不应该重写父类方法即不应该滥用继承。类和接口的粒度要尽可能细。但是不应该过细。


 





posted @   jisa  阅读(101)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示