знаете, вот сколько видел разных книг и материалов.... очень редко когда статьи, книги или материалы пишут девелоперы

)
это факт.
да простят меня профи, придется маленький ликбез провести (в меру своей проф. НЕпригодности к классическому ООП

)
1. SINGLETONE.
Любой класс в ПХП является абстрактным (и/или статическим), т.е., он НЕ существует как объект и не компилируется полностью.
Компилируются для выполнения только объекты (это когда вы пишите $переменная = new МойКласс (); )
Вот $переменная и является реальным исполняемым кодом (объектом)
Тем не менее, ПХП позволяет производить обращение к классу статически, налету выполняя его компиляцию и создавая виртуальный экземпляр класса. При таком вызове объект как таковой недоступен для программирования, а только результаты выполнения функций.
Техника singletone позволяет с одной стороны гарантировать единственный экземпляр класса в памяти (для экономии), а с другой позволяет обращаться к реальному объекту. И во всех случаях он всегда один и тот же и при этом нет необходимости использовать globals, что существенно влияет на безопасность кода в положительную сторону.
Только pattern-ом тут и не пахнет.
2. PATTERN.
Pattern - это шаблон класса попросту говоря.
Суть его сводится к тому, что создается некий промежуточный класс-шаблон который наследуется другими для расширения функционала. Можно было бы сказать, что тот же JObject наследуется и он может быть паттерном, однако нет. Это немного разные вещи.
Пример:
У вас некий функционал, который подразумевает подключение внешних обработчиков. Вы это делаете на основе некоего своего API. Для этого пишете шаблонный класс. Его даже можно вызывать в дефолтовом случае, когда не производится никаких внешних подключений. Согалсно шаблону можно создать наследников (extends) которые будут использовать заготовленные заранее функции (как предусмотрено в вашем API) для получения и возврата данных.
Собственно, сам шаблон служит для понимания сторонним разработчиком, как должен выглядеть его класс для подключения к вашему API.
По сути, это получается что-то наподобие наследования по шаблону, т.е., те же функции, но с расширенным функционалом.
Тaк что JFactory как паттерн....ы.. простите меня, но это просто смешно.
Это просто статический хелпер для удобства пользования.