Чтобы лучше понять это, подумайте о разделении проблем и единой ответственности. Ответ в этом посте - хороший способ выразить это.
Прямо сейчас у вас есть объект с именем Brand
, который содержит метод Add
и некоторые свойства, относящиеся к тому, чтобы быть объектом Brand. Это означает, что Бренд отвечает не только за управление собой, но и за управление своим взаимодействием с базой данных. Вы также исправляете аналогичную связь между Product
и базой данных. Что тогда происходит, когда у вас есть набор брендов, и вы понимаете, что у каждого бренда должен быть набор продуктов, и все они имеют базу данных logi c, разбросанную по всей? Затем предположим, что вы заметили, что для каждого Продукта требуется список ингредиентов, поэтому вы должны добавить его, поэтому для ингредиентов требуется logi c, et c. et c. Как видите, это очень быстро сбивает с толку.
Итак, на самом деле у вас должен быть третий класс, который отвечает за управление объектами базы данных, и этот класс будет иметь методы для вызова, которые принимают ваши объекты бренда и продукта в качестве параметров и взаимодействуют с базой данных внутренне . Теперь вы абстрагировали свою базу данных logi c от вашей торговой марки и продукта logi c, поэтому класс базы данных может делать то, что он создан для , но не более , а объекты Brand и Class могут существовать как определены оболочки для связанных данных и не более . Теперь все разделено, поэтому каждый класс представляет собой единую простую концепцию. Класс Brand
существует для представления данных бренда. Database
класс существует для взаимодействия с базой данных.
Я уверен, что вы уловили концепцию и, возможно, уже видели это тысячу раз, но подобные размышления помогут вам определить, что нужно изменить, и найти гораздо более простые, чистые и удобные в обслуживании решения.