Introduce Indirection | |||
| |||
Context: Both Hide Subsystem Complexity With Facade and Replace Singletons With Singleton are examples of Introduce Indirection where indirection level is used to encapsulate a design property that is difficult to control. An indirection level that has outlived its purpose can be removed with Inline Indirection. However, keeping the indirection level around manytimes proves helpfull during later refactorings. Introduce Indirection is a key refactoring in Break Module Depencencies With Adapter |