It seems to me that the Dependency Inversion Principle, the Bridge Pattern, and the Spanning Layer concept are all saying the same thing: enable independent change of a concrete consumer (using) system and a concrete provider (implementing) system by making them both depend on a two-sided abstraction layer. And all of these seem to be examples of "Find what varies and encapsulate it."
1:44:42 PM