面向对象设计原则
面向对象设计原则
单一职责原则:
我们可以看到,这个Peop类可以说是十八般武艺样样精通了,啥都会,但是实际上,我们每个人最终都是在自己所擅长的领域工作,所谓闻道有先后,术业有专攻,会编程的就应该是程序员,会打螺丝的就应该是工人,会送外卖的应该是骑手,显然这个Pope太过臃肿(我们需要修改任意一种行为都需要修改P©ople类,它拥有不止一个引起它变化的原因),所以根据单一职责原则,我们下需要进行更明确的划分,同种类型的操作我们一般才放在一起:
开闭原则:
一个软件实体,比如类、模块和函数应该对扩展开放,对修改关闭。其中,对扩展开放是针对提供方来说的,对修改关闭是针对调用方来说的。
里氏替代原则:
子类可以扩张父类的功能,但是不能改变父类的原有功能
1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
2.子类可以增加自己特有的方法。
3.当子类的方法重载父类的方法时,方法的前置条件(即方法的输入入参)靴父类方法的输入参数更宽松。
4.当子类的方法实现父类的方法时(重写/重载或实现抽象方法),方法的后置条件(即方法的输出/返回值)要比父类更严格或与父类一样。
依赖倒转原则:
Spring,在原来进行业务开发,我们去每次使用时进行new来创建对象,而是通过bean的方式进行注入,这样就可以在维护上我们只用去修改这些接口的实现类,这样我们在进行bean注入时就可以直接注入它的接口,这样我们在修改了实现类也不会影响到bean注入。
接口隔离原则:
在定义接口时,由于定义的接口不够细节,导致这个接口的一些方法在不适用,所以我们应该去把这些接口更加细分
合成复用原则:
如果你的一个类只是使用另一个类中的一些方法,不是全部,这样就最好不要去用继承的思想去使用,会导致去拿到了继承这个类里面一些不应该拿到的字段,这样耦合度太高
迪米特法则:
简单来说就是,一个类/模块对其他的类/模块有越少的交互越好。当一个类发生改动,那么,与其相关的类(比如用到此类啥方法的类)需要尽可能少的受影响(比如修改了方法名、字段名等,可能其他用到这些方法或是字段的类也需要跟着修改)这样我们在维护项目的时候会更加轻松一些。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?