Software Architecture & Engineering
55 notes
Some notes are currently available only in Chinese. English translations are shown when available.
- Functional Options Patternhistorical
Configuring constructors through composable option functions, especially in Go APIs.
- Function Types as Interfaceshistorical
Using function values to satisfy small behavioral contracts and inject behavior without heavyweight objects.
- Event Sourcinghistorical
Persisting domain changes as an append-only event history and rebuilding state through replay/projections.
- Publish–Subscribe Patternhistorical
Decoupling event publishers and subscribers while handling delivery, ordering, replay, and failure semantics.
- Producer–Consumer Patternhistorical
Decoupling work generation from processing with queues, bounded capacity, backpressure, and worker concurrency.
- Open–Closed Principlehistorical
Designing stable boundaries so common extensions require less modification to trusted core code.
- Liskov Substitution Principlehistorical
Ensuring subtypes preserve the behavioral contract expected from the base abstraction.
- Dependency Inversion Principlehistorical
Keeping high-level policy independent from volatile low-level implementation details.
- Single Responsibility Principlehistorical
Grouping behavior around a coherent responsibility and a focused reason to change.
- Interface Segregation Principlehistorical
Keeping contracts focused so clients depend only on capabilities they actually use.