How to design a system so that changing some of its elements does not affect others ?
Identify points of potential change or instability and allocate responsibilities in such a way as to ensure the sustainability of the system
The example of use that I give here is the same as the indirection pattern and polymorphism pattern, because this is the same thing by and large, only the question is asked from a slightly different angle, so you can consider that this is an implementation of indirection; I have example with databases here: PostgresQL/MySQL