# The lex records whose category is solid-object-oriented-design

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

## Entries

- [Broken Inheritance](https://banes-lab.com/records/lex/broken-inheritance.md): A subclass that violates its base type's contract, so substituting it breaks callers that rely on the base behavior.
- [Concrete Dependency](https://banes-lab.com/records/lex/concrete-dependency.md): Depending directly on a concrete implementation instead of an abstraction, coupling high-level code to low-level detail.
- [Fat Interface](https://banes-lab.com/records/lex/fat-interface.md): An interface bundling many unrelated operations, forcing clients to depend on methods they never call.
- [Incompatible Override](https://banes-lab.com/records/lex/incompatible-override.md): An override that changes a method's expected inputs or outputs, breaking the substitutability of the subtype.
- [Switch-Based Extension](https://banes-lab.com/records/lex/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/lex/type-switching.md): Branching on an object's concrete type instead of dispatching through a shared polymorphic interface.
- [Consumer-Specific Contracts](https://banes-lab.com/records/lex/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/lex/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/lex/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/lex/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/lex/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/lex/narrow-specialized-behavior.md): The degree to which honoring a base type's contract constrains a subtype from specializing its own behavior.
