Беда в том, что при изучении паттернов у учащегося неизбежно возникает ощущение, что паттерны - это про то, как писать классы.
А паттерны, на самом деле, позволяют писать классы достаточно вольготно. Они вообще ничего не декларируют насчет внутренностей классов.
Паттерны - это описание взаимодействий между классами. Способ сделать эти взаимодействия, с одной стороны, минимальными - чтобы не нарушать инкапсуляцию классов, а с другой стороны - очевидными и простыми, чтобы программисту не требовалось разбираться в нюансах этого взаимодействия.
Именно поэтому бессмысленны "небольшие примеры паттернов" - они не играют в небольшом коде.
И так же бессмысленно обсуждать реализацию конкретных классов, связанных между собой паттерном. Она может быть произвольной, лишь бы наружу не торчало лишнего.