Зачем вам дополнительный объект DB? Если он нужен только для инициализации подключения к базе, то вы просто так расходуете память.
Фактически, вы сделали класс-обертку над PDO. Хотя в текущей реализации я не вижу в этом никакой необходимости.
Я бы не стал усложнять то, что без усложнения работает. Зачем городить лишние классы и объекты??
Идите от потребности. Надо контролировать создание подключения? — делайте initDB(), не надо контролировать, а объект всегда создается при объявлении App(), то и класс лишний не нужен.
Как кто-то сказал: "усложнять — легко, упрощать — сложно". Не усложняйте себе жизнь))