一、设计原则
1. SOLID原则
S- Single Responsibility Principle 单一责任原则 O- Open-Close Principle 开放封闭原则 L- Liskov Subsititution Principle 里氏替换原则 I- Interface Segregation Principle 接口隔离原则 D- Dependence Inversion Principle 依赖倒置原则
(1) 单一责任原则:
定义:
一个类应该仅有一个引起他变化的原因,也就是说一个类应该只负责一件事情。
意义:
可以降低类的复杂度,提高类的可读性和可维护性,当发生变化的时候可以将影响降低到最低。
(2) 开放封闭原则
定义:
软件中的对象(类、模块、函数等),应对扩展是开放的,但是对于修改是封闭的。
意义:
确保用抽象去构建建构,用实现去扩展细节;提高系统的易维护性,需求变化时不影响整体框架;提高系统的可扩展性,以最小的代价实现新功能。
(3) 里氏替换原则
定义:
所有引用基类的地方必须能够透明地使用其子类的对象。通俗说就是子类可以去扩展父类的功能,但是不能改变父类原有的功能。
意义:
继承一定程度上破坏了封装,此原则来保护封装性;某子类需求变更时,不影响其它子类。
(4) 接口隔离原则
定义:
不应该强迫客户端实现一个它用不上的接口,或是说客户端不应该被迫依赖它们不使用的方法。
意义:
保证类之间的依赖关系建立在最小的接口上;类无需实现与之无关的接口。
ps: 一个类可以同时 implements 多个 interface
(5) 依赖倒置原则
定义:
实体必须依赖抽象而不是具体实现,它表示高层次的模块不应该依赖低层次的模块,它们都应该依赖于抽象。
价值:
降低代码间的耦合度,使其可扩展,易维护;实现的改变不影响系统框架。
2. 其它设计原则
(1) 合成复用原则
尽量使用对象组合,而不是继承来达到复用的目的。
(2) 迪米特法则
又叫最少知识原则,一个软件实体应当尽可能少的与其他实体发生相互作用。
(3) DRY原则
Don't Repeat Yourself,不要重复的写代码,而要抽象。
...
二、C面向对象
1. 映射关系
(1) 结构体中成员变量和函数指针构成类的属性和方法。
(2) 外层结构体包含其它结构体来实现继承,外层结构体可使用union联合体来分场景使用不同的结构体。
(3) 通过可变参数函数、函数指针 来实现重载(参数个数、类型、或顺序不同)
(4) 通过函数指针指向的不同来实现多态(通过指向基类的指针来调用实现派生类中的方法)。如:
int vfs_create2(...) { error = dir->i_op->create(); //不同的文件系统类型i_op的指向不同。 }
本文参考链接:https://www.cnblogs.com/hellokitty2/p/16212609.html