@mustafa007, человек изначально имел проблему с тем, что соединение создается каждый раз заново в разных объектах. Твой код эту проблему не решает.
Проявляем фантазию

Если хардкодить, то подключение можно выполнить в адаптере, но тогда нарушим SOLID, и код будет не универсальным. Чтобы этого не делать, передаем подключение с помощью DI, тогда мы сможем сделать несколько абстрактных классов DBModel для разных типов подключений.
Делая так, Ваш код будет универсальным!
PHP:
/**
* Абстрактная модель, расширяющая базовую модель и передающая в неё адаптер для работы с БД
*/
abstract class LocalDBModel extend AbstractModel
{
public function __construct()
{
if(!$this->adapter){
$config = include 'local_db.config.php';
$pdo = new PDO($config['dsn'], $config['login'], $config['password'], $config['option']);
$adapter = new DBAdapter($pdo);
}
parent::__construct($adapter);
}
}
abstract class RemoteDBModel extend AbstractModel
{
public function __construct()
{
if(!$this->adapter){
$config = include 'remote_db.config.php';
$pdo = new PDO($config['dsn'], $config['login'], $config['password'], $config['option']);
$adapter = new DBAdapter($pdo);
}
parent::__construct($adapter);
}
}
Когда программист только начинает свой путь, он этих приемов не понимает, это приходит с опытом. Ведь не каждый знает уравнение Шрёдингера приходя в первый класс

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