Software Design Principles
Module 5
Composition and Immutability
Why assembling behaviour beats inheriting it in most systems, why constraining where state changes pays off far beyond thread safety, and what both habits genuinely cost.
31 min2 lessons
Start moduleWhat you will be able to do
- Explain the fragile base class problem and the coupling inheritance creates.
- Convert an inheritance hierarchy into composed collaborators and judge whether the result is better.
- Identify which state in a system must be mutable and which is mutable only by habit.
- Connect immutability to concurrency, caching, auditability and debuggability.
- Name the real costs of both habits so you can argue for them honestly.
- 11 min
01Composition Over Inheritance
Inheritance couples a subclass to the internals of its parent, forever and invisibly. Composition costs a little more typing and keeps the coupling explicit and local.
- 10 min
02Immutability and Where State Is Allowed to Change
Most of the state in a system is mutable by habit rather than by need. Constraining where change happens pays off in concurrency, caching, auditability and — most of all — in debugging.
Composition and Immutability
6 questions · pass at 75%