设计原则小记
开闭原则
- 对扩展开放,对修改关闭,通过抽象定义框架,通过实现扩展细节
依赖倒置原则
- 高层模块不应该依赖底层模块,二者都应该依赖抽象,抽象不应该依赖细节,细节应该依赖抽象,针对接口编程,而非针对实现编程,需要保证抽象稳定。
- 抽象通过入参,或者构造方法的方式注入。
单一职责原则
- 一个类,接口,方法只负责一项职责,代码逻辑最小粒度化。
- 类级别,对类进行拆分,负责职责最小。
- 接口级别,通过接口拆分,可实现多个接口,不同的接口,支持的方法不同。
- 法级别,方法不可拆分,职责明确。
接口隔离原则
- 实现需要的行为,不需要的不去实现 高内聚,低耦合的设计思想。
迪米特法则
- 最少知道原则,只关注出入参,与方法内部实现依赖的类没有关注。
里氏替换原则
- 一段程序,如果适用一个父类的话,一定也适用其子类,所有引用父类的地方必须能透明的使用其子类,子类对象能够替换父类对下,而程序逻辑不变
- 杜绝继承泛滥,想清楚应不应该继承,比如正方形和长方形不应该继承四边形,同时是开闭原则的一种体现。
- 子类可以扩展父类的功能,不能修改父类的功能
- 子类可以扩展父类的抽象方法,不能覆盖父类的非抽象方法
- 子类可以增加自己特有的方法
- 当子类方法重载父类方法时,方法的前置条件(输入,入参)要比父类方法的出入参更加宽松。
- 当子类方法重载父类方法时,方法的后置条件(输出,返回)要比父类方法的出入参更加严格或者相等。
合成复用原则
- 编写代码,尽量使用对象的组合或者聚合,而不是继承的关系来达到复用的目的
- 组合:具备相同的生命周期,比如人体,聚合有独立的生命周期,比如鼠标和键盘
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示