Time to reduce my drafts messages here. This topic is going to be bond to the object-oriented approach used in C.
Object-oriented design patterns in the kernel, part 1 [lwn.net]
First part of this series is focused on vtable in kernel, NULL pointers as function pointers.
Object-oriented design patterns in the kernel, part 2 [lwn.net]
Inheritance and polymorphism in C [state-machine.com]