Solution (source code)

= Solution

\b[<Creational patterns> organize object creation; <behavioral patterns> organize interactions and responsibility for behavior.] A <creational pattern> controls how concrete <software objects> are selected, instantiated, or shared, so clients need not hard-code the entire construction policy. Examples include the <factory method pattern> and the <singleton pattern>.

A <behavioral pattern> describes how objects collaborate, receive requests, or distribute an <algorithm>'s behavior. For example the <observer pattern> lets a subject notify dependants after its state changes, and the <strategy pattern> supplies interchangeable implementations of an operation. This distinction concerns the pattern's principal responsibility; a system can use both kinds together.