где поставить код подключения MySQL из MCPKit в какао - PullRequest
0 голосов
/ 14 ноября 2011

Я пытаюсь спланировать, куда поместить код подключения MySQL -

MCPConnection *conn = [[MCPConnection alloc] initToHost:@"" withLogin:@"" usingPort:@""];

и т. Д.из MCPKit на Mac.Моя цель состоит в том, чтобы сделать как можно меньше экземпляров подключения во всем приложении (если возможно, только один будет потрясающим).

Единственные 3 места, о которых я могу думать, это:

  • Делегат приложения, но как тогда использовать то же соединение в других классах (инкапсуляция данных)

  • Поместить код в каждый контроллер Window / View, который требует егодля выполнения каждой отдельной цели (но это означает намного больше кода и большое количество соединений, которые я не хочу).

  • Или, наконец, установка отдельного класса для всех MySQLзапросы и единственное соединение.(но как это сделать, чтобы методы в этом классе легко вызывались, или чтобы операторы / запросы SQL могли быть достаточно адаптивными для любого другого класса, использующего методы).

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

Спасибо за ваше время.

1 Ответ

0 голосов
/ 14 ноября 2011

В качестве простого решения вы можете использовать шаблон Singleton и заменить код инициализации вызовом статического getInstance.Единственный публичный метод синглтон-обертки - это getConnection, который вы затем используете как обычно.Да, вы можете использовать общие методы построения SQL в этом классе, но это приводит к раздуванию кода, лучше использовать шаблон Flyweight для запросов отдельного типа.

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

...