Писать самому что-то - это адовый бред, вы только потратите время зря. Изучайте и пользуйте уже готовые решения - для этого они и были созданы.
Если охота поковыряться - лучшим выбором собрать своего франкенштейна из уже готовых модулей.
Вот вам
интересный тутор по сборке, как раз с комментами автора о том - какие паттерны/антипаттерны он юзает и для чего это вообще надо.