# Lexicon terms whose category is solid-object-oriented-design

> 16 records

This index as JSON: https://banes-lab.com/json/api/facets/lexicon/category/solid-object-oriented-design

## Entries

- [Broken Inheritance](https://banes-lab.com/records/lexicon/broken-inheritance.md): A subclass that violates its base type's contract, for example by an override that changes the expected inputs or outputs, so substituting it breaks callers that rely on the base behavior.
- [Fat Interface](https://banes-lab.com/records/lexicon/fat-interface.md): An interface bundling many unrelated operations, forcing clients to depend on methods they never call.
- [Switch-Based Extension](https://banes-lab.com/records/lexicon/switch-based-extension.md): Extending behavior by editing a growing switch or conditional on a type instead of adding a new polymorphic type.
- [Type Switching](https://banes-lab.com/records/lexicon/type-switching.md): Branching on an object's concrete type instead of dispatching through a shared polymorphic interface or a visitor's double dispatch.
- [Consumer-Specific Contracts](https://banes-lab.com/records/lexicon/consumer-specific-contracts.md): The ability to give each client an interface exposing only the operations it uses.
- [Feature Extension without Modification](https://banes-lab.com/records/lexicon/feature-extension-without-modification.md): The ability to add new behavior by writing new code rather than editing existing, tested code.
- [Contract Preservation](https://banes-lab.com/records/lexicon/contract-preservation.md): The requirement that a subtype honor every behavioral guarantee of the type it replaces.
- [Role-Specific Interfaces](https://banes-lab.com/records/lexicon/role-specific-interfaces.md): The requirement that interfaces be defined per client role rather than as one general-purpose surface.
- [Interface Proliferation](https://banes-lab.com/records/lexicon/interface-proliferation.md): The degree to which splitting interfaces finely multiplies the number of small interfaces to manage.
- [Narrow Specialized Behavior](https://banes-lab.com/records/lexicon/narrow-specialized-behavior.md): The degree to which honoring a base type's contract constrains a subtype from specializing its own behavior.
- [Extract Interface](https://banes-lab.com/records/lexicon/extract-interface.md): A technique for declaring the operations clients use as an interface, so the clients depend on it instead of on the class.
- [Extract Role Interface](https://banes-lab.com/records/lexicon/extract-role-interface.md): A technique for splitting the operations one client role uses into an interface of their own.
- [Split Interface](https://banes-lab.com/records/lexicon/split-interface.md): A technique for dividing a broad interface into smaller ones, each holding operations that change together.
- [Replace Inheritance with Delegation](https://banes-lab.com/records/lexicon/replace-inheritance-with-delegation.md): A technique for replacing a subclass with a class that holds the former base as a field and forwards to it.
- [Split Hierarchy](https://banes-lab.com/records/lexicon/split-hierarchy.md): A technique for dividing a class hierarchy whose subtypes do not honor one contract into hierarchies that each do.
- [Invert Dependency](https://banes-lab.com/records/lexicon/invert-dependency.md): A technique for making a high-level module own an abstraction that a low-level module implements.
