Является ли хорошей практикой использование AppDelegate для манипулирования данными и обработки? - PullRequest
4 голосов
/ 01 марта 2011

Я создаю объект AppDelegate и использую его в своей программе, и я объявил все установщики и получатели, а также вставляю, выбираю, удаляю, обновляю запросы базы данных в нем.

Я хочу спросить, это хорошая практика, если да, то как, а если нет, то почему это не очень хорошая практика?

Я надеюсь, что мой вопрос ясен, пожалуйста, задавайте соответствующие вопросы, если у вас есть какие-либо вопросы.

Ответы [ 3 ]

8 голосов
/ 01 марта 2011

Не очень хорошая стратегия превращать ваш AppDelegate в «большой шарик грязи», который содержит миллион методов и свойств (хотя это может быть заманчиво).

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

Кроме того, вы можете передать ссылку на DatabaseManager тем частям приложения, которые в ней нуждаются.Этот последний подход, однако, вызывает большее «загрязнение интерфейса», когда вам нужно изменить интерфейсы во многих местах, чтобы передать в DatabaseManager.

И еще одна альтернатива - сделать ваш DatabaseManager эффективным.'singleton' - доступ к его экземпляру через метод класса в классе.Синглтоны, которые работают таким образом, часто осуждаются, и обычно по уважительным причинам (что усложняет тестирование, такого рода вещи).Я стараюсь избегать того, чтобы объекты «синглтонного» характера запекались прямо в объекте - я предпочитаю, если мне это нужно, иметь известную точку доступа (своего рода «фабрику», если хотите), где выможно перейти к получению общего экземпляра.

4 голосов
/ 01 марта 2011

Я думаю, что лучшим способом было бы создание глобального синглтон-класса вместо обработки в Appdelegate.

Объявите все свои сеттеры и геттеры там, используя единый объектный дескриптор по всему вашему проекту. Посмотрите эту ссылку, как создать синглтон-класс

Для базы данных создайте DataAccessLayerClass. всякий раз, когда вы хотите выполнить какие-либо запросы, получите доступ к этому классу. Методы этого класса должны иметь входные данные в качестве ваших данных и будут создавать запросы и выполнять этот запрос и возвращать данные.

2 голосов
/ 01 марта 2011

Все дело в сложности и ваших чувствах.Вам должно понравиться ваше решение; -)

Я, очевидно, делаю это по-другому - у меня есть синглтон, который обрабатывает все мои обычные вещи в базе данных.Я пытаюсь сделать делегат приложения максимально простым.Это лучше для совместного использования кода и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...