Это вопрос теории не практический.Может ли дизайн шаблонов разрушать абстракцию?
Я пытаюсь разработать программу, которая следует за лучшими практиками программного обеспечения. Но у меня возникли проблемы с поиском наилучшего способа сделать определенные вещи, которые позволяют разработать Test Driven Development и хорошую инкапсуляцию и абстракцию, а также минимизировать сцепление.
Я планировал иметь два уровня абстракции, уровень управления базой данных и уровень управления таблицей.
class TableManager()
{
init() {
manager = DatabaseManger()
}
do_operation(String operation) {
connection = manager.get_db_connection()
connection.execute(operation)
}
}
Это казалось хорошей идеей, потому что фактические данные соединения скрыты от менеджера таблиц. Но это также кажется плохим, потому что TableManager тесно связан с DatabaseManager и для тестирования, мне нужно будет иметь отдельное соединение с базой данных для настройки состояния базы данных, например, для удаления базы данных и таблицы, чтобы мы тестировали операции, когда база данных не существуют и тому подобное
Может кто-то весить здесь и оспаривать мои предположения? Я мог бы переоценить важность некоторых факторов или недооценивать другие. Это обычная проблема с дизайном?
Я думаю, что нет никакого другого пути, затем с абстрактной таблицей управления r, который подходит для каждой базы данных. –
Ну, вы можете передать 'manager' в качестве аргумента конструктора в' TableManager' и иметь 'MockDatabaseManager', который вы можете использовать для тестирования. –
Это на самом деле не так далеко. У меня есть две таблицы, каждая из которых имеет свой собственный менеджер таблиц и имеет свой собственный DBManager. Будет ли смысл иметь DBConnector как отдельный объект и передать в качестве аргумента? – Handcre