Вы используете шаблон singleton / shared-managed, когда важно, чтобы в любой момент времени был активен только один экземпляр класса.
Например, важно, чтобы приложение имело один и только один экземпляр UIApplication. Вам понадобятся два экземпляра объекта приложения, потому что невозможно сохранить их оба в одном и том же состоянии. NSFileManager использует шаблон, чтобы предотвратить столкновение двух файловых операций в приложении.
Применение уникального экземпляра во время выполнения - единственная веская причина для использования шаблона singleton / shared-managed.
В вашем случае вам просто нужно удобное место для парковки некоторых методов служебного класса, которым не требуется живой экземпляр для работы. Лучший способ справиться с этим - создать служебный класс, который объединяет все методы класса вместе. Затем, чтобы использовать методы, вы просто отправляете имя класса следующим образом:
UIView *theView=[MyViewUtilityClass getLikeRow:aRect ofType:aType];
Это заставляет MyViewUtilityClass вызывать метод из любого места приложения без необходимости инициализировать объект. Это проще и аккуратнее, чем поддерживать в живых уникальный экземпляр. Если вы используете служебные методы во всем приложении, вы можете добавить заголовок в универсальный заголовок .pch, и все ваши пользовательские классы автоматически получат служебный класс.
Однако, как и в случае с одноэлементным шаблоном, методы служебного класса могут склонить вас к лени и чрезмерному использованию их там, где им на самом деле не место. При чрезмерном использовании они начинают делать приложение похожим на старую школу, не объектно-ориентированную коллекцию независимых функций Си. Это нарушает инкапсуляцию и модульность и превращает вашу программу в клубок процедурного кода.
Итак, будьте осторожны, вы помещаете в служебный класс только самые общие и универсальные функции. Если у вас есть много функций, которые имеют дело с определенным классом, например UIView и подклассы, вам следует поместить функции в категорию этого класса.
person
TechZen
schedule
03.05.2010