Кодовая база, которую мне передали для работы с функциями класса databse, который наследует от MDB2. Это создает основу для используемой структуры MVC (пользовательская конструкция), а модели, в свою очередь, наследуют от db.
Как я уверен, некоторые из вас заметили, это приводит к довольно большой проблеме. Каждый раз, когда вы создаете экземпляр модели, результатом является создание новой базы данных. Это, очевидно, довольно расточительно. Это также означает, что я не могу использовать транзакции по назначению, потому что, если транзакция начинается в одном экземпляре модели, ее эффекты невидимы для других экземпляров, пока не произойдет фиксация.
Мой план состоит в том, чтобы изменить класс db, чтобы инкапсулировать MDB2 вместо наследования на него, а затем поддерживать один экземпляр MDB2 через его одноэлементные функции.
Тем не менее, MDB2 - это большая библиотека с множеством методов, и многое из того, что выше в базе кода, зависит от возможности доступа к методам MDB2.
Есть ли способ инкапсулировать класс MDB2 и передавать ему вызовы без изменения более высоких уровней и без необходимости писать метод-обертку для каждого метода в MDB2?