Вопросы с тегами [singleton]

1

голосов
3

ответ
309

Просмотры

Android - Singleton Class only updating on second refresh

У меня есть одноэлементный класс под названием DataManager. Я обновить некоторые данные в DataManager, когда я называю OnStop () в классе (активности) называется USERPROFILE. Он принимает значения от некоторых полей ввода текста и обновляет объект пользователя в DataManger. Я перемещаться через мое приложение с BottomNavigationView - так что, когда я нажимаю на значок домой с точки зрения Userprofile, я должен вызвать Userprofile OnStop () и обновлять значения. Это работает правильно. Я прошел через код и значение в моем классе одноэлементного правильно обновляется. Проблема возникает, когда я пытаюсь прочитать значения из домашней страницы. Значения еще не были обновлены. НО, если я вновь открыть вид или открыть другой вид, значение в DataManager являются правильными обновленными значениями. Что вы думаете, что проблема? Я не уверен, если его отношение, но дома и USERPROFILE и наследуют от базового класса, который содержит метод OnCreate () из обоих дочерних классов. Singleton класс называется DataManager: класс DataManager общественный {частный статический DataManager only_instance = NULL; объекты общественного списка; процедуры публичного списка; общественности статической theUser пользователя; общественного DataManager () {only_instance.theUser = новый пользователь (); } Общественности статической DataManager деЫпзЬапсе () {если (only_instance == NULL) {only_instance = новый DataManager (); } Вернуть only_instance; }} Метод OnStop () из Userprofile @Override защищен OnStop пустот () {super.onStop (); DataManager дм = DataManager.getInstance (); dm.theUser. } объекты общественного списка; процедуры публичного списка; общественности статической theUser пользователя; общественного DataManager () {only_instance.theUser = новый пользователь (); } Общественности статической DataManager деЫпзЬапсе () {если (only_instance == NULL) {only_instance = новый DataManager (); } Вернуть only_instance; }} Метод OnStop () из Userprofile @Override защищен OnStop пустот () {super.onStop (); DataManager дм = DataManager.getInstance (); dm.theUser. } объекты общественного списка; процедуры публичного списка; общественности статической theUser пользователя; общественного DataManager () {only_instance.theUser = новый пользователь (); } Общественности статической DataManager деЫпзЬапсе () {если (only_instance == NULL) {only_instance = новый DataManager (); } Вернуть only_instance; }} Метод OnStop () из Userprofile @Override защищен OnStop пустот () {super.onStop (); DataManager дм = DataManager.getInstance (); dm.theUser. } деЫпзЬапсе (); dm.theUser. } деЫпзЬапсе (); dm.theUser. }
Taylor Barton
1

голосов
0

ответ
44

Просмотры

Map(value set using spring beans) is empty when I try to access using Rest URL

Я новичок в Spring Beans. Я пытаюсь установить карту ввода с помощью файла beans.xml и доступа к этому значению, используя запрос GET REST. beans.xml `В главном классе, BookService bookService = (BookService) context.getBean ( "bookservice2"); bookService.getMap () ToString (). // здесь работают fine.` Я думаю, когда я пытаюсь получить доступ к этой карте, используя запрос GET, он создает еще один экземпляр BookService класса, который имеет пустой bookMap. Просьба предоставить какое-то решение, чтобы получить тот же результат, когда я использую запрос GET отдыхайте. Изменить: Обработка запроса получить как @GET @Produces (MediaType.APPLICATION_JSON) @Path ( "/ getBook / {ID}") общественная книга getBook (@PathParam ( "ID") строковый идентификатор) {вернуться bookService.getBook (ID); } BookService.Java класс `BookService общественного {статическая Map bookMap = новый HashMap (); // Этот класс имеет Getter сеттер bookmap тоже. общественного BookService () {} публичная книга getBook (String ID) {вернуть bookMap.get (Integer.parseInt (идентификатор)); } `
AwesomeBlossom
1

голосов
1

ответ
158

Просмотры

Является ли окончательным необходимо для класса одноплодного в Swift?

Чтобы создать класс одноплодного, я написал что-то вроде этого: класс SingletonEx {имя переменного = "" частный Init () {} Статические пусть sharedInstance = SingletonEx () функа instanceMethod () {} статической функ classMethod () {}} Некоторые учебники говорят окончательный необходимо в то время как другие просто игнорируют окончательное ключевое слово. После того, как я попытался подклассов SingletonEx, я получил следующие результаты. Кажется, я не могу написать инициализатор для подкласса, что означает, я не могу использовать метод экземпляра переопределения в подклассе. Насколько я знаю, синглтон определение все о одном конкретизации и доступа к методам экземпляра через единственный экземпляр. Так что я не думаю, что нужно использовать окончательными в одноплодном определении. Но оба мои учителя и некоторые электронные учебники говорят, что это необходимо. Я запутался, так как вы можете» т создать подкласс экземпляра в любом случае, даже переопределить методы экземпляра, вы не можете использовать его или получить доступ к нему, какой смысл говорить окончательный необходимо для класса одиночки? Если я не прав, пожалуйста, указать.
Chao Peng
1

голосов
0

ответ
23

Просмотры

Use Serializable or modified Singleton?

I have an Application with a List of Objects on the main screen. When clicking on one of them, I'm transferring the user to the next Fragment. Then I have more 3 Fragments which are setting(manipulating) the object fields. My question is, is it right instead of implementing the Serializable interface and pass the Object using Bunde I'll do kind of Singleton. Something like this (I know that for Singleton I must do the empty constructor private). public class Father { private static Father instance; private String name; private int age; Father() { } public static Father getInstance(Father father) { if (instance == null) { instance = new Father(); if(father != null) { instance = father; } } return instance; } Father regularFather = new Father(); regularFather.setAge(35); regularFather.setName("Danny"); Father regularFather2 = new Father(); regularFather2.setAge(44); regularFather2.setName("Mike"); Father regularFather3 = new Father(); regularFather3.setAge(15); regularFather3.setName("Tom"); Father.getInstance(regularFather2).setName("Mike32"); System.out.println("regularFather name is: " + regularFather.getName() + " \n regularFather2 name is: " + regularFather2.getName() + " \n regularFather3 name is: " + regularFather3.getName() + " \n Instance name is: " + Father.getInstance(null).getName() ); I test it, it works great, but my question is, is it right to do so and what if it can cause problems in the futere?
Igor Fridman
1

голосов
1

ответ
210

Просмотры

Kotlin singleton in a subclass

Я пишу рамки, в которых у меня есть трудности, чтобы написать общий одноэлементный класс, который нужен быть специализирован пользователем. Я хотел бы использовать возможность написать что-то вроде: класса CustomClass защищенного конструктора (): BasicClass () с каркасной возможностью написать: BasicClass.instance возвращающей BasicClass одиночку и пользователь в состоянии написать: CustomClass.instance возвращая тот же экземпляр, но как одиночки, например CustomClass. У меня есть две возможности в виду, Case # 1: Singleton управляется пользователем класс класса CustomClass частного конструктора (): BasicClass () {частный объект Holder {вал INSTANCE = CustomClass ()} объект компаньоном {вал экземпляра: CustomClass по ленивым { Holder.INSTANCE}}} Но я не имею никакого отношения экземпляра в сторону BasicClass, и пользователю необходимо реализовать Синглтон каждый раз. Дело № 2: Singleton управляется рамки, которые я не в состоянии написать правильно Заранее спасибо за вашу помощь.
AnthonyCFE
1

голосов
1

ответ
225

Просмотры

альтернативные модели C ++ Singleton Design

Я ненавижу бить мертвую лошадь, что сказала, я пошел через так много противоречивых статей за последние несколько дней в отношении к использованию одноплодного рисунка. Этот вопрос не может быть о том, который является лучшим выбором в целом, а то, что имеет смысл для моего использования. Животное проект я работаю на это игра. Некоторые из кода, который я в настоящее время работаю, я склоняюсь к использованию одноэлементного узора. Варианты использования являются следующими: глобально доступным регистратор. рендеринга менеджер OpenGL. доступ к файлам системы. доступ к сети. и т.д. Теперь для уточнения, более чем несколько выше, требуют общих состояний между доступами. Например, регистратор оборачивать ведение журнала библиотеки и требует указателя на журнал вывода, сеть требует установленного открытого соединения и т.д. Теперь от того, что я могу сказать, это» смор предположил, что одиночек следует избегать, так что давайте посмотрим, как мы можем сделать это. Много статей просто сказать, чтобы создать экземпляр в верхней части и передать ее в качестве параметра в любое место, которое необходимо. Хотя я согласен, что это технически выполнимо, на мой вопрос, то становится, как можно управлять потенциально огромным количеством параметров? Ну, что приходит на ум оборачивают различные экземпляры в своем роде «контекст» объект и попутно, что, то делать что-то вроде context-> Журнал ( «Hello World»). Теперь уверен, что это не плохо, но что, если у вас есть своего рода рамки, как так: game_loop (CTX) -> update_entities (CTX) -> on_preupdate (CTX) -> run_something (CTX) -> использовать только ctx-> войти () в какой-то урод края случае в этой функции. -> on_update (CTX) -> любой (CTX) -> ctx-> networksend (материал) -> update_physics (CTX) -> ctx-> networksend (материал) // возможно CTX никогда не использует журнал здесь. Вы получите точку ... в некоторых областях, некоторые аспекты «CTX» никогда не использовать, но вы все еще застряли проходит буквально везде в случае, если вы можете отлаживать что-то вниз по линии с помощью регистратора, или, может быть, позже в разработке, вы на самом деле хотите сети или что-то в этом разделе кода. Я чувствую, как в примере выше предпочел бы быть подходящей для глобально доступных одноэлементных, но я должен признать, что я иду из C # / Java / JS фона, которые могут окрашивать мой взгляд. Я хочу принять Настрой / лучшие практики программиста C ++, но как я уже сказал, я не могу найти прямой ответ. Я также заметил, что статьи, которые предлагают только прохождение в «одиночки» в качестве параметра только дают очень упрощенные варианты использования, что кто-нибудь согласился бы параметром было бы лучшим способом пойти. В этой игре, например, вы, вероятно, wan't доступ к регистрации везде, даже если вы не планируете использовать его немедленно. Файловая система материал может быть во всем, но пока не строить из проекта, это очень трудно сказать, когда / где это будет наиболее полезным. Так что я: Палка с использованием одиночек для таких случаев использования, независимо от того, как «злые / плохие» люди говорят, что это. Заверните все в объекте контекста, и передать его буквально везде. (Кажется, своего рода брутто IMO, но если это «более приемлемым / лучше» способ сделать это, пусть так и будет.) Что-то совсем другое. (На самом деле потерял, как к тому, что может быть.) Если вариант 1, с точки зрения производительности, я должен переключиться на использование функций пространства имен, и скрывая «частные» переменные / функции в анонимных пространств имен, как и большинство людей в C? (Я предполагаю, что будет небольшой прирост производительности, но тогда я застрял того, чтобы вызвать «INIT» и «уничтожить» метод на некоторых из них, а не в состоянии просто позволить конструктор / деструктор сделать это для меня, все еще может быть стоят?) Теперь я понимаю, что это может быть основано немного мнение, но я надеюсь, что я все еще могу получить достаточно хороший ответ, когда более сложная / вложенная база коды находится под вопросом. Edit: После того, как много дополнительных обсуждений я решил использовать «Service Locator» шаблон вместо. Для того, чтобы предотвратить глобальный / синглтон в Service Locator I» м делает все, что может использовать услуги наследуют от абстрактного базового класса, который требует Service Locator передается при построен. Я еще не реализовал все еще, так что я все еще не уверен, буду ли я работать в каких-либо проблемы с этим подходом, и все равно люблю обратную связь, если это разумная альтернатива для одноплодной / глобальной области видимости дилеммы. Я прочитал, что Service Locator также несколько из анти-паттерна, который сказал, многие из примера я нашел реализовали его с статикой и / или одноточечным, возможно, использовать его, как я описал удаляю аспекты, которые вызывают его быть анти-модель? и будет по-прежнему любит обратную связь, если это разумная альтернатива для одноплодной / глобальной области видимости дилеммы. Я прочитал, что Service Locator также несколько из анти-паттерна, который сказал, многие из примера я нашел реализовали его с статикой и / или одноточечным, возможно, использовать его, как я описал удаляю аспекты, которые вызывают его быть анти-модель? и будет по-прежнему любит обратную связь, если это разумная альтернатива для одноплодной / глобальной области видимости дилеммы. Я прочитал, что Service Locator также несколько из анти-паттерна, который сказал, многие из примера я нашел реализовали его с статикой и / или одноточечным, возможно, использовать его, как я описал удаляю аспекты, которые вызывают его быть анти-модель?
Hex Crown
1

голосов
1

ответ
149

Просмотры

Difference between instance and singleton in Unity3D

I have a basic question that can help new unity guys to learn faster. As you know that in unity we both use singleton and instance of a class. I have realised a thing that and I want to be sure about what I am thinking. Can you help me to be sure? I use instance in some situations like this; If I have a scene and I want to use instance as a layer to transfer some data between scripts. I create an empty game object and assign this code it as a component; public class GameplayController : MonoBehaviour { public static GameplayController instance; void Awake() { MakeInstance(); } void MakeInstance() { if (instance == null) { instance = this; } else if(instance != null) { Destroy(gameObject); } } } I use singleton in some situations like this; If I have a scene and I want to use singleton pattern as a layer to transfer some data between all scenes. I create an empty game object and assign this code it as a component; public class GameplayController : MonoBehaviour { public static GameplayController instance; void Awake() { MakeSingleton(); void MakeSingleton() { if (instance == null) { instance = this; DontDestroyOnLoad(gameObject); } else if(instance != null) { Destroy(gameObject); } } } So, I wanted to be sure If I am on the right way or not? It worked until now, but will be there a problem in most advanced situations in the future?
silkworm
1

голосов
0

ответ
33

Просмотры

Как реализовать параметризированный синглтон с Ninject

Есть Ninject на основе способы реализации такого завода: общественный класс AspectProviderFactory {частные случаев словаря только для чтения = новый словарь (); общественного IAspectProvider Get (строка aspectName) {если Инстансы [aspectName] = новый AspectProvider (aspectName) (Instances.ContainsKey (aspectName)!); возвращать экземпляры [aspectName]; }}, Если мне нужно каждый одноэлементный экземпляр на каждый параметр строки. . Bind () ToConstructor (ctorArg => новый AspectProvider (ctorArg.Inject ())) InSingletonScope (). и вар instance1 = Kernel.Get (новый ConstructorArgument ( "aspectName", "aspect1"); вар instance2 = Kernel.Get (новый ConstructorArgument ( "aspectName", "aspect2"); не решает проблему,
Alexey Khoroshikh
1

голосов
0

ответ
56

Просмотры

Camel REST service problem in parallel calls

I have created a REST service with Apache Camel (REST DSL) running on Karaf container that accepts a list of items and returns the availabilities of those them. The problem is that if the service is called in parallel it doesn’t return the correct results. For example, let’s assume that we have the following two calls: Call 1: item1, item2 Call 2: item3, item4 I would expect the following two answers Response 1: availabilityOfItem1, availabilityOfItem2 Response 2: availabilityOfItem3, availabilityOfItem4 But instead of that I am getting the two answers with mixed availabilities Response 1: availabilityOfItem1, availabilityOfItem2, availabilityOfItem3, availabilityOfItem4 Response 2: availabilityOfItem1, availabilityOfItem2, availabilityOfItem3, availabilityOfItem4 Probably this problem occurs due to the related bean that I have for the service, but let me give you an overview of what I did in my Camel context.
Themis Pyrgiotis
1

голосов
0

ответ
116

Просмотры

Безопасность Нити вызовов методов «общая» статическая постоянная собственность

У меня есть класс Swift, который использует традиционный образец какао одноплодный: один статические разделяемые постоянная и собственную инициализацию, которая вызывается только один раз для этого совместно постоянных. Это как это: общественный класс Foo {общественности статической пусть разделяет = Foo () частный Init () {/ * ... * /} общественный FUNC бар () {/ * ... * /} общественного функ Баз () {/ * ... * /}} // Между тем, в нескольких местах на несколько потоков: Foo.shared.bar () Foo.shared.baz () Если у меня есть десяток тема с вызовом функций, которые постоянны, это пауза всех вызовов пока что инициализатор не завершится, или я должен иметь некоторые защиты в этих функциях экземпляра ждать инициализации для завершения?
Ben Leggiero
1

голосов
2

ответ
47

Просмотры

В Singleton Pattern, что случается, когда два или более потоков выполнения одновременно? [Дубликат]

Этот вопрос уже есть ответ здесь: Java Singleton и синхронизация 8 ответов в ниже я пытаюсь отправить два поток в одноплодном шаблоне, чтобы увидеть, как две нитей, работающих без теории synchronizing.In две нитей должны сделать два отдельных objects.But здесь без Синхронизация, только один объект является создание и детали двух нитей назначая два, которые object.I можно увидеть, когда я печатать object.How что happening.why не есть два объекта создание? общественного класса Singleton_Pattern {государственной статической силы основных (String [] арг) {Тест1 t1 = новый Тест1 (); t1.start (); Test2 t2 = новый Test2 (); t2.start (); t1.m (); t2.m (); }} Класс Тест1 расширяет резьбы {аннулируются м () {System.out.println (A.getA ()); A.getA () SetValue ( "Кошка"). System.out.println (A.getA () GetValue ().); }} Класс Test2 расширяет резьбы {аннулируются м () {System.out.println (A.getA ()); A.getA () SetValue ( "Собака"). System.out.println (A.getA () GetValue ().); }} Класса А {частный статический Аа; Имя строки; частный A () {} общественности статической Гета () {если (а == NULL) {а = новый A (); } Возвращает; } Общественного недействительными SetValue (строка т) {имя = т; } Строка ПолучитьЗначение () {имя общественного возврата; }} частный A () {} общественности статической Гета () {если (а == NULL) {а = новый A (); } Возвращает; } Общественного недействительными SetValue (строка т) {имя = т; } Строка ПолучитьЗначение () {имя общественного возврата; }} частный A () {} общественности статической Гета () {если (а == NULL) {а = новый A (); } Возвращает; } Общественного недействительными SetValue (строка т) {имя = т; } Строка ПолучитьЗначение () {имя общественного возврата; }}
Thilan Ravindu
1

голосов
0

ответ
42

Просмотры

Лучшая практика: DAO доступ без его Singleton

У меня есть JavaFX GUI с главным классом контроллера (в основном только оберткой, не делает много до сих пор) и два впрыскивается / включены контроллеры для частей графического интерфейса пользователя. Это, чтобы держать вещи отдельно и не перегружать класс контроллера. Оба контроллера подключается с помощью класса медиаторов, потому что кнопки в одном из контроллеров влияют на элементы графического интерфейса пользователя в другой. Моя проблема заключается в следующем: взаимодействие с пользователем будет вызывать как графические изменения, а также изменения в базу данных. Таким образом, я, вероятно, придется получить доступ к DAO, который я создал в различных точках внутри моих классов контроллеров - два в данный момент, но, возможно, несколько больше по мере роста приложения. Я читал, что с помощью шаблона Singleton для DAO, является обычным явлением, но на самом деле не очень хорошая практика. Следовательно, я ищу альтернативы: как я мог передавать команды моей DAO с разных точек моей программы, особенно, если у меня нет прямого контроля над созданием классов контроллеров (как они загружаются с помощью FXML загрузчика на команды)? Проходя вокруг экземпляра кажется трудным здесь. Спасибо заранее! PS: Я намеренно не размещать код здесь, потому что большая часть существующего материала является IMHO не имеет отношения к вопросу, а другой код еще не написан (как это в настоящее время планируется :-P). Если вам это нужно, просто дайте мне знать. потому что большая часть существующего материала является IMHO не имеет отношения к вопросу, а другой код еще не написан (как это в настоящее время планируется :-P). Если вам это нужно, просто дайте мне знать. потому что большая часть существующего материала является IMHO не имеет отношения к вопросу, а другой код еще не написан (как это в настоящее время планируется :-P). Если вам это нужно, просто дайте мне знать.
Boandlkramer
1

голосов
0

ответ
24

Просмотры

Avoiding multi-instance singletons in single context Spring app

Функция @PostConstruct возвращает System.identityHashCode (это) отличается от @Autowired версии «же» синглтона ... У меня нет несколько контекстов приложений есть только один контекст участвует. Я не ожидал, что присутствие прорастающих или статических внутренних классов к делу, но я включил их на всякий случай. @Service класс А публика проходит тему {@PostContruct общественного недействительными инициализации () {Start (); } @Service общественный статический класс B расширяет {общественного B () {} общественного недействительными запуска () бросает Throwable {System.err.println ( "B (" + System.identityHashCode (это) + ") ждет ...") ; синхронизирована (это) {ожидание (6000000);} System.err.println ( "B (" + System.identityHashCode (это) + ") сделано в ожидании полных 6000 секунд и не менее"); }} Частный B B; @Autowired (обязательно = TRUE) общественные A (B б) {this.b = Ь; } Общественный недействительный запуск () генерирует Throwable {Thread.sleep (10000); // только для примера // следующие строки могут быть вызваны из любого потока System.err.println ( "autowire B (" + System.identityHashCode (б) + ") notifyAll ()."); синхронизированным (б) {b.notifyAll ();}}} Я ожидаю, что исходный хэш-код B, чтобы соответствовать Autowired хэш-код найден из класса А. Однако это разные объекты и так notifyAll никогда не прерывает ожидание Б. B (329759586) ожидания ... // 10 секунд последнего autowire B (932795037) .notifyAll () // 5990 секунд последний B (329759586) сделано ждет полных 6000 секунд и никогда не меньше // только для примера // следующие строки могут быть вызваны из любого потока System.err.println ( "autowire В (" + System.identityHashCode (б) + ") notifyAll ()."); синхронизированным (б) {b.notifyAll ();}}} Я ожидаю, что исходный хэш-код B, чтобы соответствовать Autowired хэш-код найден из класса А. Однако это разные объекты и так notifyAll никогда не прерывает ожидание Б. B (329759586) ожидания ... // 10 секунд последнего autowire B (932795037) .notifyAll () // 5990 секунд последний B (329759586) сделано ждет полных 6000 секунд и никогда не меньше // только для примера // следующие строки могут быть вызваны из любого потока System.err.println ( "autowire В (" + System.identityHashCode (б) + ") notifyAll ()."); синхронизированным (б) {b.notifyAll ();}}} Я ожидаю, что исходный хэш-код B, чтобы соответствовать Autowired хэш-код найден из класса А. Однако это разные объекты и так notifyAll никогда не прерывает ожидание Б. B (329759586) ожидания ... // 10 секунд последнего autowire B (932795037) .notifyAll () // 5990 секунд последний B (329759586) сделано ждет полных 6000 секунд и никогда не меньше Однако они имеют разные объекты и так notifyAll никогда не прерывает ожидание Б. B (329759586) ожидания ... // 10 секунд последнего autowire B (932795037) .notifyAll () // 5990 секунд последний B (329759586) сделано ждет полных 6000 секунд и никогда не меньше Однако они имеют разные объекты и так notifyAll никогда не прерывает ожидание Б. B (329759586) ожидания ... // 10 секунд последнего autowire B (932795037) .notifyAll () // 5990 секунд последний B (329759586) сделано ждет полных 6000 секунд и никогда не меньше
Brenda.ZMPOV
1

голосов
3

ответ
995

Просмотры

Symbian S60 - Несколько соединений с диалогом одного соединения

Мое приложение требуется до 3-х одновременных загрузки соединений. Я в настоящее время использую (немного измененный) CWebClient класс, представленный в рамках Carbide UI, однако использование нескольких экземпляров этого для каждого соединения подсказывает мне несколько типов, чтобы «выбрать точку доступа» RSocketServ и объект RConnection существуют в классе, они появляются быть вещи, которые открывают точку доступа. Будет ли это достаточно хорошее решение, чтобы сделать эти статические объекты (Singleton), поэтому точка доступа вызывается только один раз? Любой имеет опыт / мысли? Спасибо! Только в случае, если вам интересно, я использую S60 3rd Ed. FP2 v1.1
adam
1

голосов
1

ответ
1.7k

Просмотры

Should I make an IUnityContainer object use a Singleton pattern?

Я новичок в использовании концепции Unity и IoC / DI. Я начал с концепцией прокатки моего собственного с помощью шоу Джеймса Ковача на dnrTV в тесте. Его пример был Контейнер работы в качестве одноэлементного доступа через статический метод в классе IoC, чтобы вы могли зарегистрировать типы при запуске и разрешении типа в вашем приложении. Я знаю, что это не было полнофункциональным и было в основном показывает понятие IoC. Я сейчас пытаюсь использовать Unity в проекте. В моей Main () создать новый контейнер, но как только мой WinForms открывает контейнер выходит из области видимости и расположен. Позже в программе, когда я пытаюсь разрешить тип я больше не имею оригинальный контейнер и его зарегистрированные типов. Есть ли концепция или реализация конструкт мне не хватает? Моя текущая мысль создать что-то вроде этого: общественный статический класс Container {частный статический объект только для чтения SyncRoot = новый объект (); частный статический экземпляр летучего IUnityContainer; общественности статической IUnityContainer Instance {получить {если (экземпляр == NULL) {блокировка (SyncRoot) {если (экземпляр == NULL) {Экземпляр = новый UnityContainer (); }}} Возвращает экземпляр; }}} Я уверен, что это будет работать, он просто не кажется правильным. общественности статической IUnityContainer Instance {получить {если (экземпляр == NULL) {блокировка (SyncRoot) {если (экземпляр == NULL) {Экземпляр = новый UnityContainer (); }}} Возвращает экземпляр; }}} Я уверен, что это будет работать, он просто не кажется правильным. общественности статической IUnityContainer Instance {получить {если (экземпляр == NULL) {блокировка (SyncRoot) {если (экземпляр == NULL) {Экземпляр = новый UnityContainer (); }}} Возвращает экземпляр; }}} Я уверен, что это будет работать, он просто не кажется правильным.
Keith Sirmons
1

голосов
2

ответ
361

Просмотры

Syntax error in Singleton Template class when porting from linux to windows

I have a singleton library from a linux project that I'm trying to port to Windows. When I try to compile, it errors with syntax error: identifier "rpSingleton" The error is from the following section of code: template inline T& Q::Singleton::Instance() { Singleton*& rp_singleton(rpSingleton()); //ERRORS HERE if (0 == rp_singleton) { rp_singleton = new Singleton; } return rp_singleton->mInstance; } Below is the whole file for reference. Any idea what's wrong? #ifndef Q_SINGLETON_H #define Q_SINGLETON_H // SYSTEM INCLUDES #include // PROJECT INCLUDES // LOCAL INCLUDES #include "NonDerivable.h" // NAMESPACES namespace Q { template class Singleton; } // FORWARD REFERENCES namespace Q { template void InstanceCleanup(); } template class Q::Singleton : private boost::noncopyable , private virtual Qf::NonDerivable { // FRIENDS // Allow only T specialization of Instance be a friend friend T& Instance(); // Allow only the T specialization of Instance be a friend friend void InstanceCleanup(); public: protected: private: /// The single object T mInstance; /// Wrapper method of a static pointer to support instance and clean up /// static Singleton*& rpSingleton(); /// Constructor is private, must use Instance Method to use the object /// Singleton(); /// Get the Instance of the Singleton /// \return The Instance static T& Instance(); /// A way to free this singleton's resources before program termination /// static void CleanUp(); }; // INLINE METHODS template inline T& Q::Singleton::Instance() { Singleton*& rp_singleton(rpSingleton()); if (0 == rp_singleton) { rp_singleton = new Singleton; } return rp_singleton->mInstance; } template inline void Q::Singleton::CleanUp() { delete rpSingleton(); rpSingleton() = 0; } template inline Q::Singleton*& Q::Singleton::rpSingleton() { static Singleton* sp_singleton(0); return sp_singleton; } template inline Q::Singleton::Singleton() { } template inline T& Q::Instance() { return Singleton::Instance(); } template inline void Q::InstanceCleanup() { Singleton::CleanUp(); } // NON-INLINE METHODS (TEMPLATE CLASSES ONLY!!!!) #endif // SINGLETON_H
Adam Haile
1

голосов
1

ответ
412

Просмотры

отказ Инстанцирования и взаимодействие синглтона-поведение [NInject1]

Я создал Ninject (с использованием версии 1.5) связывание следующим образом:. Bind () ToMethod (CTX => {попробуйте {// создать сессионный завод, возможно, не из-за проблем баз данных, таких как неправильное подключение строки} поймать (Exception е) { певд DatabaseException (е);}}) Использование (). Как вы можете видеть, это связывание использует одноплодное поведение, но также может бросить исключение, когда что-то не настроено правильно, как неправильно строка подключения к базе данных. Теперь, когда создание сессионного завода терпит неудачу на первом (бросание исключения базы данных), Ninject не пытается создать объект еще раз, но всегда возвращает нуль. Мне нужно Ninject, чтобы проверить нуль первыми и заново, когда экземпляр имеет нулевое значение, но, конечно, не тогда, когда уже есть экземпляр успешно сконструированный (держа его синглтон). Как это: вар а = Kernel. Получить(); // может потерпеть неудачу, а = NULL // ... изменить некоторые настройки базы данных уаг Ь = Kernel.Get (); // не может не больше, б = объект ISessionFactory я должен был бы написать пользовательского поведения или я упускаю что-то другое?
Maximilian Csuk
1

голосов
2

ответ
440

Просмотры

iphone синхронизация объекта одноэлементного

Я работаю на приложение iPhone, но это, вероятно, общий вопрос. У меня есть класс синглтон модели и был бы сценарии, где несколько NSOperations (потоки) будут существовать и работать с одноплодным объектом. Если все они называют один и тот же метод в этом объекте, мне нужно, чтобы иметь какой-то механизм блокировки? Или может этот метод будет выполняться только по одному? У меня нет компьютерной науки фона, но я думаю, что все потоки будут иметь их ВЫЗОВ на тот же адрес (этот метод). Также вы можете предложить, пожалуйста хороший начинающий программирования книги, рассматривающей общие концепции программирования. У меня нет мозгов для Кнута своего рода книг.
user127091
1

голосов
1

ответ
1.1k

Просмотры

Javascript синглтон: доступ внешний атрибут из внутренней функции

// я = внутренняя, о = внешняя, F = функция, а = атрибут вар одноэлементный = функция () {вар, если = функция () {вернуть this.oA; // возвращает неопределенное} {возвращение из: функция () {this.oA = истина; Возвращение Если (); }, OA: ложь}; } (); singleton.oF (); Если синглтон были класс (как в языке, на основе классов), я не должен быть в состоянии получить доступ к oÀ через this.oA? Единственный способ я нашел доступа oÀ из невозможных делая: возвращение singleton.oA; // возвращает истину (как это должно) я не знаю, почему, но доступ к oÀ через одноплодный базовый объект заставляет меня чувствовать себя вид ... грязные. Что мне не хватает? Что такое this.oA на самом деле имея в виду (в смысле области видимости зрения)?
o-o
1

голосов
1

ответ
1.6k

Просмотры

«Неопределенная ссылка на» с одноплодной

С помощью следующего кода: класс DBConnection {// Methodes: частный частный: // CONSTRUCTEUR DBConnection (); // Destructeur ~ DBConnection (); // Methodes: общественные общественности: BOOL открыть (); BOOL близко (); // Methodes: общественный: статический открытый: статический DBConnection * getSingleton (); // Переменные частный: статический DBConnection * одноточечно; QSqlDatabase сопп; QString водитель, хозяин, имя пользователя, пароль, DBName; }; #endif // DBCONNECTION_HPP #include "DBConnection.hpp" // Инициализация дю одноточечно данс l'Espace глобальный, автомобиль статический DBConnection * DBConnection :: одноточечно = 0; // Methodes: частная DBConnection :: DbConnection () {этом-> Conn = QSqlDatabase :: addDatabase ( "QMYSQL"); этом-> conn.setHostName ( ""); этом-> conn.setUserName ( ""); этом-> conn.setPassword ( ""); этом-> conn.setDatabaseName ( ""); } DbConnection :: ~ DbConnection () {}; // Methodes: общественный BOOL DBConnection :: Open () {BOOL респ = this-> conn.isOpen () верно: this-> conn.open (?); если (респ!) QMessageBox :: критический (0, "ERREUR критика!", "Impossible d'ouvrir ла база де données!"); вернуть репутацию; } DBConnection * DBConnection :: getSingleton () {если (Singleton == 0) одноточечно = новый DBConnection; вернуться одиночки; } #Ifndef DAOMYSQLFACTORY_HPP #define DAOMYSQLFACTORY_HPP #include "InterfaceDAOFactory.hpp" #include "DAO.hpp" класс DAOMySQLFactory: общественный InterfaceDAOFactory {// Methodes: частный частные: // CONSTRUCTEUR DAOMySQLFactory (); // Destructeur ~ DAOMySQLFactory (); // Methodes: общественность: heritées общественности: DAO * getDAOClient (); ДАО * getDAOSite (); ДАО * getDAOMachine (); // Methode: статический открытый: статический DAOMySQLFactory * getSingleton (); // Переменные частные: // Instance уникальный статический DAOMySQLFactory * singletonMySQLFactory; }; #endif // DAOMYSQLFACTORY_HPP #include "DAOMySQLFactory.hpp" #include "DBConnection.hpp" #include "DAOMySQLClient.hpp" DAOMySQLFactory * DAOMySQLFactory :: singletonMySQLFactory = 0; // Methodes: частный // CONSTRUCTEUR DAOMySQLFactory :: DAOMySQLFactory () {} // Destructeur DAOMySQLFactory :: ~ DAOMySQLFactory () {} // Methode: статический DAOMySQLFactory * DAOMySQLFactory :: getSingleton () {если (singletonMySQLFactory == 0) singletonMySQLFactory = новый DAOMySQLFactory; вернуться singletonMySQLFactory; } // Methodes: общественность: heritee DAO * DAOMySQLFactory :: getDAOClient () {возвращают 0; } ... #include #include "WinMain.h" // TEST #include "DAOPersistenceFactory.hpp" #include "DAO.hpp" #include "DAOMySQLFactory.hpp" #include "DBConnection.hpp" ИНТ основной (интермедиат ARGC, символ * ARGV []) {QApplication приложение (ARGC, ARGV); // TEST InterfaceDAOFactory * idao = DAOPersistenceFactory :: getDAOFactory (DAOPersistenceFactory :: MySQL); ДАО * d = idao-> getDAOClient (); DBConnection :: getSingleton (); WinMain фены; fen.show (); вернуть app.exec (); } #Ifndef DAO_HPP #define DAO_HPP #include #include #include класс DAO {// Methodes: общественные общественности: DAO (); Виртуальный ~ ДАО (); // Methodes: общественность: abstraites общественности: виртуальный QStringList FindAll () = 0; // переменная защищена: QSqlQuery allQuery; }; #endif // DAO_HPP #include "DAO.hpp" DAO :: DAO () {} DAO :: ~ DAO () {} #ifndef DAOMYSQLCLIENT_HPP #define DAOMYSQLCLIENT_HPP #include #include #include #include "DAO.hpp" #include "DBConnection.hpp" класс DAOMySQLClient: общественный DAO {// Methodes: общественная общественность: DAOMySQLClient (); // DAOMySQLClient (DBConnection * подключение); // Переменные частный: DBConnection * соппы; QSqlQuery byIdQuery, byNameQuery; }; #endif // DAOMYSQLCLIENT_HPP #include #include #include #include "DAOMySQLClient.hpp" // Methodes: общественный // CONSTRUCTEUR DAOMySQLClient :: DAOMySQLClient () {} // CONSTRUCTEUR // DAOMySQLClient :: DAOMySQLClient (DBConnection * подключение) {/ / этом-> Conn = соединение; // this-> conn-> Open (); // initQueries (); //} ... Почему у меня есть неопределенная ссылка на 'DBConnection :: getSingleton ()' collect2: л.д. возвращается статус 1 выхода в основной () и DAOPersistenceFactory :: getDAOFactory (DAOPersistenceFactory :: MySQL); не в то время как это, кажется, ту же реализацию? DBConnection * соппы; QSqlQuery byIdQuery, byNameQuery; }; #endif // DAOMYSQLCLIENT_HPP #include #include #include #include "DAOMySQLClient.hpp" // Methodes: общественный // CONSTRUCTEUR DAOMySQLClient :: DAOMySQLClient () {} // CONSTRUCTEUR // DAOMySQLClient :: DAOMySQLClient (DBConnection * подключение) {/ / этом-> Conn = соединение; // this-> conn-> Open (); // initQueries (); //} ... Почему у меня есть неопределенная ссылка на 'DBConnection :: getSingleton ()' collect2: л.д. возвращается статус 1 выхода в основной () и DAOPersistenceFactory :: getDAOFactory (DAOPersistenceFactory :: MySQL); не в то время как это, кажется, ту же реализацию? DBConnection * соппы; QSqlQuery byIdQuery, byNameQuery; }; #endif // DAOMYSQLCLIENT_HPP #include #include #include #include "DAOMySQLClient.hpp" // Methodes: общественный // CONSTRUCTEUR DAOMySQLClient :: DAOMySQLClient () {} // CONSTRUCTEUR // DAOMySQLClient :: DAOMySQLClient (DBConnection * подключение) {/ / этом-> Conn = соединение; // this-> conn-> Open (); // initQueries (); //} ... Почему у меня есть неопределенная ссылка на 'DBConnection :: getSingleton ()' collect2: л.д. возвращается статус 1 выхода в основной () и DAOPersistenceFactory :: getDAOFactory (DAOPersistenceFactory :: MySQL); не в то время как это, кажется, ту же реализацию? #endif // DAOMYSQLCLIENT_HPP #include #include #include #include "DAOMySQLClient.hpp" // Methodes: общественный // CONSTRUCTEUR DAOMySQLClient :: DAOMySQLClient () {} // CONSTRUCTEUR // DAOMySQLClient :: DAOMySQLClient (DBConnection * подключение) {/ / этом-> Conn = соединение; // this-> conn-> Open (); // initQueries (); //} ... Почему у меня есть неопределенная ссылка на 'DBConnection :: getSingleton ()' collect2: л.д. возвращается статус 1 выхода в основной () и DAOPersistenceFactory :: getDAOFactory (DAOPersistenceFactory :: MySQL); не в то время как это, кажется, ту же реализацию? #endif // DAOMYSQLCLIENT_HPP #include #include #include #include "DAOMySQLClient.hpp" // Methodes: общественный // CONSTRUCTEUR DAOMySQLClient :: DAOMySQLClient () {} // CONSTRUCTEUR // DAOMySQLClient :: DAOMySQLClient (DBConnection * подключение) {/ / этом-> Conn = соединение; // this-> conn-> Open (); // initQueries (); //} ... Почему у меня есть неопределенная ссылка на 'DBConnection :: getSingleton ()' collect2: л.д. возвращается статус 1 выхода в основной () и DAOPersistenceFactory :: getDAOFactory (DAOPersistenceFactory :: MySQL); не в то время как это, кажется, ту же реализацию? DAOMySQLClient (DBConnection * подключение) {// this-> Conn = соединение; // this-> conn-> Open (); // initQueries (); //} ... Почему у меня есть неопределенная ссылка на 'DBConnection :: getSingleton ()' collect2: л.д. возвращается статус 1 выхода в основной () и DAOPersistenceFactory :: getDAOFactory (DAOPersistenceFactory :: MySQL); не в то время как это, кажется, ту же реализацию? DAOMySQLClient (DBConnection * подключение) {// this-> Conn = соединение; // this-> conn-> Open (); // initQueries (); //} ... Почему у меня есть неопределенная ссылка на 'DBConnection :: getSingleton ()' collect2: л.д. возвращается статус 1 выхода в основной () и DAOPersistenceFactory :: getDAOFactory (DAOPersistenceFactory :: MySQL); не в то время как это, кажется, ту же реализацию?
canardman
1

голосов
2

ответ
747

Просмотры

Singleton Завод Участник безопасности Функция Thread

Я хочу одноэлементный завод, который создает объекты IPropertyMapper. Завод имеет словарь, который содержит ссылки на делегат Func. Словарь неизменен, я просто хочу быстрый доступ. Будет ли этот код ниже поточно-? Зовешь Создать () Потокобезопасные? определение класса: общественный запечатанный класс PropertyMapperFactory {частный статический чтения PropertyMapperFactory _instance = новый PropertyMapperFactory (); частный только для чтения словаря _handlers; частный PropertyMapperFactory () {this._handlers = новый словарь (); this._setTimeHandler (); } Общественности статической PropertyMapperFactory GetFactory () {возвращение _instance; } // безопасна ли эта нить? общественный IPropertyMapper Создать (UnitSetting _units) {вернуть новый PropertyMapper (это.
Amit
1

голосов
1

ответ
231

Просмотры

как начать много процесса (собственная программы), когда процесс синглтона в C #

У меня есть цикл и в цикле моей программа породит новый процесс и новый процесс синглтона так другой процесс не может начать Еогеасп (вар я в файлах) {System.Diagnostics.Process.Start ( «C: \\ Telock \\ Telock.exe», "-S" + i.ToString ()); } Как начать 2 после 1 отделки и ...
maysam
1

голосов
2

ответ
301

Просмотры

Как создать вспомогательные функции в гибком приложении

У меня есть гибкое приложение, и я использую Кэрнгормс структуру - SRC / COM / MySITE / редактор / модель / содержит следующие две вещи EditorModelLocator.as (Singleton Насильственные Применения глобал), EditorGlobalConstants.as (содержит все константы), как и после публичного статического константного SUPPORT_PHONE: String = '800-865-7496'; общественности статической сопзЬ SUPPORT_EMAIL: String = '[email protected]'; Мне было интересно, где лучшее место, чтобы поместить вспомогательные методы есть. Мне нужно, чтобы они были методами, которые я могу использовать вне одноплодного исполнения класса. Имело бы смысл поставить его в глобальных констант? Единственное, что против этого, это я всегда использую EditorGlobalConstants таким же образом: EditorGlobalConstants.SUPPORT_PHONE Пример «» вспомогательной функции заключается в следующем: общественный вар пустым (значение: String): Boolean {если (значение == «» || значение == NULL) возвращает истину; вернуться ложным; } Я могу хранить всю эту информацию в EditorGlobalConstants, но мне было интересно, если возможно EditorHelpers.as будет лучше, и как бы я инстанцирует / использовать это решение? Спасибо! Эндрю Торп
andrewpthorp
1

голосов
1

ответ
132

Просмотры

Singleton data out of scope problem

Я пытаюсь передать данные между viewcontrollers одного UITabBarController, используя класс одноплодной, как показано ниже: #import @interface AppSingleton: NSObject {NSMutableString * selectedStr; } @Property (неатомической, сохраняют) NSMutableString * selectedStr; + (AppSingleton *) sharedAppInstance; @end Вот мой файл реализации: #import "AppSingleton.h" @implementation AppSingleton @synthesize selectedStr; + (AppSingleton *) sharedAppInstance {статические AppSingleton * sharedAppInstance; @synchronized (Я) {если (sharedAppInstance!) {sharedAppInstance = [[AppSingleton Alloc] инициализации]; }} Вернуть sharedAppInstance; } - (недействительными) dealloc {[selectedStr релиз]; [Супер dealloc]; } @End Я пытаюсь установить selectedStr в одном из моих viewcontrollers, как показано ниже, и распечатать его в NSLog однако я получаю нуль: AppSingleton * sharedAppInstance; // в sharedAppInstance заголовка = [AppSingleton sharedAppInstance]; // в viewdidload [sharedAppInstance setSelectedStr: self.someStr]; NSLog (@ "selectedStr является:% @", sharedAppInstance.selectedStr); Когда я отладки это, sharedAppInstance.selectedStr, кажется, выходит за рамки. Я хотел бы знать, где я делаю ошибку. Спасибо.
tiw
1

голосов
2

ответ
207

Просмотры

Singleton - это полезно

Если у меня есть объект, который работает как хранилище с Save (), GetProduct (прод ид) и т.д., это хорошая идея для этого, чтобы быть синглтон в asp.net приложений. Моя мысль в том, что, поскольку у меня есть много обращений к базе данных, это позволит повысить производительность, так как он не теряя времени, воссоздающий объект репозитория каждый раз. Я ничего подобного в любых образцах, не видел, так почему это не так? Спасибо
Ryan
1

голосов
1

ответ
179

Просмотры

У одиночек есть ли смысл в Objective-C контексте?

Я родом из Java / CPP среды, где одиночки имеют свои преимущества по сравнению класса (статическая) метода, однако в Objective-C из-за его динамичный характер, из моего прошлого наблюдения нет действительно никакого преимущества в использовании синглтона по методу класса. Может кто-то подтвердить это, или, может быть, привести примеры, когда одноэлементно может сделать что-то, что метод класса не может (но исключая случая, в котором Синглтон на самом деле «многотонный") EDIT: Я знаю, что одноэлементные и методы класса являются и это не вопрос концепции, больше как: может ли метод класса полностью заменить синглтон в Objective-C, что делает одноплодную реализацию бесполезной?
Valentin Radu
1

голосов
1

ответ
312

Просмотры

Загрузка синглтон с заданной загрузчиком классов в Eclipse,

У меня есть небольшая проблема в моем проекте. Мы разрабатываем клиенту для нашего сервера как плагин Eclipse. Там, у нас есть «ApplicationRegistry», который чуть-чуть больше, чем карта, которая содержит все объекты, нам нужно только один раз, но не должны быть одиночек. Это ApplicationRegistry реализуется как перечисления одноточечными и среди некоторых других вещей в другом плагине. Все отлично работает до сих пор. Теперь клиент хочет различные «перспективы», которые показывают несколько различных возможностей. Это также не проблема. К настоящему времени у нас есть только два runnables и два различных пунктов меню, чтобы запустить два разных классов, но это не проблема (и, вероятно, будет лучше), чтобы разделить их на две или три плагинов. Теперь я перехожу к проблеме: Мы можем запустить обе эти перспективы в то время. Но ApplicationRegistry создается загрузчиком классов собственного плагина и для этого существует один раз для всех наших точек зрения. Поэтому, когда мы пытаемся открыть новую вкладку в первой точке зрения, она открывается во втором. Чтобы вырезать Короче говоря: Plugins «Parent1» и «» parent2 использовать синглтон в плагин «ребенку» и влияют друг на друг нежелательным образом. Моя идея заключается в том, чтобы загрузить синглтон в каждом из родительских модулей с их собственным загрузчиком классов. Но так как я понятия не имею, как загрузить перечислимый синглтон с заданным загрузчиком, я не могу проверить, если это решение будет делать это. Может кто-нибудь сказать мне, как загрузить перечислимую синглтон с заданной загрузчиком классов (и если правильно ApplicationRegistry бы получить имя, кроме того, в каждом плагине), если это может работать, или если есть другое решение, которое Безразлично» т сопряжены с огромным реинжиниринг во всем проекте? Спасибо, Себастьян
snieke
1

голосов
3

ответ
202

Просмотры

Создание объекта «Player» в одноплодном классе

Я создаю калькулятор для некоторых карт игры. В этой игре, я создаю класс Singleton к менеджеру игры. Он содержит результаты, отслеживает, где игра и т.д ... Теперь после того, как запуски приложения, я буду просить пользователя ввести имена 4 игроков. После этого, 4 объекта игрока инстанцируются в соответствии с их именами. У меня уже есть объект под названием «Игрок», поэтому 4-х игроков получат экземпляр с их именем, и оценка 0, чтобы начать с. Теперь мне нужно хранить эти игрок в моей одноплодной классе. Таким образом, я создал 4 свойства игрока в классе. Однако мой вопрос, по методе инициализации в классе Singleton, в: если ((самой = [супер] инициализации)) {// Задаем свойство здесь} Где // устанавливает свойство здесь есть, что я пишу? Должен ли я сделать что-нибудь с игроками свойств там? Спасибо,
darksky
1

голосов
1

ответ
159

Просмотры

Google Guice: Singleton с поддержкой XML десериализации?

в моем проекте я нужен класс, который содержит конфигурацию проекта. Конфигурация должна быть загружена из файла XML и должна быть синглтоном. В Guice есть одноэлементная сфера. Теперь я должен «переписать» одноэлементный с десериализованными конфигурациями. Является ли это как-то можно?
Max Schmidt
1

голосов
1

ответ
265

Просмотры

MVC3 Base Сбои-регулятор, тот же код работает в наследуемом контроллере

Предпосылки .NET 4, C # MVC3, используя JsonFx для сериализации и десериализации данных. Базовый контроллер был расширен, чтобы перехватывать все запросы и сделать следующее: Получить некоторые JSON от удаленного сервера. Выполнить запрос LINQ, основанный на принятом в ключах (герой, тело, сноске). Возвращает общую модель для просмотра. Этот код работает отлично при запуске в контроллере наследует от базового контроллера, но при размещении в базовом контроллере и вызываются из унаследованного контроллера, я получаю следующее сообщение об ошибке: Не удается привести объект типа «System.Linq.Expressions.ConstantExpression» к типу «System.Linq.Expressions.ParameterExpression». Это виновный строка:. Вар queryHero = heroModel.ArrayItems () Где (о => o.DisplayName == keyHero); Вопрос: Как я могу избежать получаю ошибку типа, когда в базовом контроллере? Это' S тот же самый код, который работает нормально в унаследованной контроллера. Спасибо за ваше время. Полный код общественного models.GenericPageModel GetGenericPageContent (строка keyHero, строка keyBody, строка keyFooter) {попробуйте {// получить содержание "таблицы" вар heroContent = GetJson ( "Page_Section_Hero_Content"); вар BodyContent = GetJson ( "Page_Section_Body_Content"); вар footerContent = GetJson ( "Page_Section_Footer_Content"); // новый читатель читатель вар = новый JsonReader (новые DataReaderSettings (новый DataContractResolverStrategy ())); // считываем его Var heroModel = reader.Query (heroContent); вар bodyModel = reader.Query (BodyContent); вар footerModel = reader.Query (footerContent); // Выполнить запрос для текущей страницы вара queryHero = heroModel. . ArrayItems () Где (о => o.DisplayName == keyHero); вар queryBody = bodyModel.ArrayItems (), где (о => o.DisplayName == keyBody). вар queryFooter = footerModel.ArrayItems (), где (о => o.DisplayName == keyFooter). // модели для возврата models.PageSectionHeroContent героя; models.PageSectionBodyContent тела; models.PageSectionFooterContent сноска; // любого содержания героя? если (queryHero.Any ()) герой = новый models.PageSectionHeroContent {DisplayName = queryHero.FirstOrDefault () отображаемое_имя, ContentXML = queryHero.FirstOrDefault () ContentXML..}; еще герой = новый models.PageSectionHeroContent {DisplayName = «К сожалению, произошла ошибка.», ContentXML = «Данные не были возвращены.» }; // любого содержимого тела? если (queryBody.Any ()) корпус = новый models.PageSectionBodyContent {DisplayName = queryBody.FirstOrDefault () отображаемое_имя, ContentXML = queryBody.FirstOrDefault () ContentXML..}; остальное тело = новый models.PageSectionBodyContent {DisplayName = «К сожалению, произошла ошибка.», ContentXML = «Данные не были возвращены.» }; // любого содержимого колонтитула? если (queryFooter.Any ()) = колонтитула новый models.PageSectionFooterContent {DisplayName = queryFooter.FirstOrDefault () отображаемое_имя, ContentXML = queryFooter.FirstOrDefault () ContentXML..}; еще сноска = новый models.PageSectionFooterContent {DisplayName = "К сожалению, произошла ошибка.", ContentXML = "
Jibran
1

голосов
2

ответ
2.2k

Просмотры

Редактирование объекта с XML без создания нового экземпляра

У меня есть класс, который нужно быть Singleton. Он также должен иметь возможность загружать и сохранять свои данные поля в файле XML. Следующий метод возвращает новый экземпляр, который ломает мой Singleton шаблон, в результате чего потенциальные ошибки в своем коде. Параметры общественных нагрузки () {использования (поток Потока = File.OpenRead (имя_файл)) {XmlSerializer сериализатор = новый XmlSerializer (TypeOf (Настройки)); Возвращение (Настройки) serializer.Deserialize (поток); }} Какой метод можно использовать для того, чтобы обновить данные в моем существующем экземпляре, а не возвращать совершенно новый экземпляр? Я изучил немного Linq к Xml, но не нашел хороший пример этого. Нужно ли мне, чтобы сохранить все мои данные поля в словаре?
Bob Coder
1

голосов
3

ответ
756

Просмотры

Как вы вводить объект в одноточечный?

У меня есть одноэлементный класс: общественный класс Widget {личного Mapper картограф; частное статические виджеты SINGLETON; частный виджет (Mapper карта) {setMapper (карта); } Общественных виджеты деЫпзЬапс () {если (Singleton == NULL) SINGLETON = новый виджет (???); вернуться Синглтон; }} Я не только не понимаю, как пройти Синглтон картостроитель в частном конструктору, я не вижу, как я могу использовать инъекции зависимостей, чтобы правильно установить одноплодную вверх. Скажем, Mapper представляет собой интерфейс. Возможно, под «нормальным» модульного тестирования исполнения я хочу передать Синглтон экземпляр StandardMapper, но в то время, я хочу, чтобы передать его MockMapper. Заранее спасибо за любые советы!
IAmYourFaja
1

голосов
1

ответ
1.7k

Просмотры

Singleton Bean UDP Listener

Я невероятно новым для разработки Java EE, и я пытаюсь создать UDP Listener в GlassFish. Это всегда должно быть запущенно. Поэтому, я считаю, что боб Singleton выполнит эту задачу. Вот проблема. Код работает, но он вызывает GlassFish пули вверх. Несмотря на заявление получения развертывается, страница администратора для GlassFish просто висит. Я также не могу получить доступ к другим элементам развернутого WAR приложения ведущему меня к мысли, что существует проблема многопоточности. Тем не менее, я всегда был в предположении, что EJB не имеют многопоточные проблем. Я сделал это в Eclipse. @Singleton @LocalBean общественного класса UDPListener {общественного UDPListener () {DatagramSocket DatagramSocket = NULL; попробуйте {DatagramSocket = новый DatagramSocket (9090); } Задвижка (SocketException е) {е. printStackTrace (); } Байт [] буфера = новый байт [100]; // Создать пакет датаграммы. DatagramPacket пакет = новый DatagramPacket (буфер, buffer.length); в то время как (истинно) {// Получает пакет. попробовать {datagramSocket.receive (пакет); } Поймать (IOException е) {e.printStackTrace (); } Буфера = packet.getData (); // Вывести данные: System.out.println (новая строка (буфер)); }}} Есть ли что-то я не хватает? Я просматривал 6 Учебник Java EE, и это упоминает что-то о параллельном доступе. Тем не менее, я не уверен, что это проблема. Спасибо EDIT: Просто чтобы добавить больше информации, мне нужно, чтобы по существу создать Bean, который всегда будет работать, слушать и реагировать на UDP-пакетов, которые приходят в.
Phanto
1

голосов
2

ответ
207

Просмотры

Initing certain values in too many of an object makes my app crash

I'm filling in a singleton object with mock data to spit out in a function that returns the array that all of this data goes into. @interface menuItem : NSObject { //Item's Name NSString *itemName; //String of Prices - "$4.50" or "$1.50 / $2.50 / $3.50" NSArray *priceList; //List of Ingredients NSArray *ingredientList; //List of adjusted Quantities NSArray *ingredientQuants; //Number of Sizes for corresponding prices int numOfSizes; } - (NSString *)priceText; @property (nonatomic, copy) NSString *itemName; @property (nonatomic, copy) NSArray *priceList; @property (nonatomic, copy) NSArray *ingredientList; @property (nonatomic, copy) NSArray *ingredientQuants; @property (nonatomic, assign) int numOfSizes; @end The object doesn't care how many objects I put in it with menuItems with values stored in ingredientQuants, but after a number of declarations, it gets sick of letting ones that do have ingredientQuants declared, even with variables that are declared right before I stash them there, and then it decides to EXEC_BAD_ACCESS on main.c -(NSArray *)returnAllItems { return items; } - (void) loadMenu { if(categories && items){ return; } categories = [[NSArray alloc] initWithObjects:@"Coffee", @"Coffee Alternatives", @"Smoothies", @"Baked Goods", @"Sandwiches",@"Salads", nil]; NSArray *nyQuants = [[NSArray alloc] initWithObjects:@"No", @"Yes", nil]; //NSArray *ynQuants = [NSArray arrayWithObjects:@"Yes", @"No", nil]; NSArray *numQuants = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"0", nil]; NSArray *espressoIList = [[NSArray alloc] initWithObjects:@"Decaf", @"Iced", @"Soymilk", @"Shots",nil]; menuItem *menuitemOne = [[menuItem alloc] init]; menuitemOne.itemName = @"Regular Coffee"; menuitemOne.priceList = [NSArray arrayWithObjects:@"$1.50",@"$1.95",@"$2.15", nil]; menuitemOne.numOfSizes = 3; // menuitemOne.ingredientList = [NSArray arrayWithObjects:@"Decaf", @"Iced", nil]; //menuitemOne.ingredientQuants = [NSArray arrayWithObjects:nyQuants, nyQuants, nil]; menuItem *menuItemTwo = [[menuItem alloc] init]; menuItemTwo.itemName = @"Latte"; menuItemTwo.priceList = [NSArray arrayWithObjects:@"$2.55", @"$3.45", @"$3.75", nil]; menuItemTwo.numOfSizes = 3; menuItemTwo.ingredientList = espressoIList; menuItemTwo.ingredientQuants = [NSArray arrayWithObjects:nyQuants, nyQuants, nyQuants, numQuants, nil]; menuItem *mocha = [[menuItem alloc]init]; mocha.itemName = @"Mocha"; mocha.priceList = [NSArray arrayWithObjects:@"$3.15",@"$3.95",@"$4.75", nil]; mocha.numOfSizes = 3; mocha.ingredientList = espressoIList; //THIS LINE BREAKS THE ENTIRE PROGRAM NSArray *aaaa = [NSArray arrayWithObjects:@"ASD", @"DFG", nil]; mocha.ingredientQuants = [NSArray arrayWithObjects:aaaa, nil]; //MORE STUFF HAPPENS LIKE ABOVE items = [NSArray arrayWithObjects:coffeeArray, espressoArray,smoothieArray, bakedArray, sandwichArray,saladArray, nil]; [nyQuants release]; [numQuants release]; [espressoIList release]; NSLog(@"Categories: %d", [categories retainCount]); NSLog(@"items: %d", [items retainCount]); NSLog(@"nyQuants: %d", [nyQuants retainCount]); NSLog(@"numQuants: %d", [numQuants retainCount]); NSLog(@"espresslist: %d", [espressoIList retainCount]); } Then I init this object, grab its member arrays and put them in a viewcontroller: CBMenu *WholeMenu = [CBMenu sharedInstance]; NSLog(@"MENU"); NSArray *cats = [WholeMenu returnCategories]; NSLog(@"Cats"); NSArray *menu = [WholeMenu returnAllItems]; NSLog(@"Menu"); //What are these I don't even [cats retain]; [menu retain]; FoodMenuTwoViewController *mmvc = [[FoodMenuTwoViewController alloc]initWithData:cats :NO: YES]; [mmvc setDataSource:cats]; [mmvc setMenu:menu]; [mmvc setTitle:@"Menu"]; [self.navigationController pushViewController:mmvc animated:YES]; //FOR SOME REASON IT DOESN'T LIKE ME RELEASING CATS AND MENU OR REMOVING THEIR //RETAIN STATEMENTS ABOVE PLEASE DON'T HURT ME. return; When the first bool in the VC is YES, it shows a list of categories. I see this, but when the view appears when it's pushed onto the stack, it proceeds to vomit all of its organs up and die. NSZombieEnabled tells me CharlieBrown[4285:fb03] * -[__NSArrayI retain]: message sent to deallocated instance 0x6e06550
Fal-Cone
1

голосов
1

ответ
646

Просмотры

NancyFX: Почему мой IUserMapper одноточечно экземпляр дважды?

Я пытаюсь реализовать очень простой пример FormsAuthentication. Это не реальная жизнь, но она вскинула проблему. AuthenticationService, который предназначен, чтобы быть уровень одноточечно приложений, по-видимому, экземпляр дважды. Вот код: класс пользователь общественности: IUserIdentity {публичная строка UserName {получить; задавать; } Общественных IEnumerable Иски {получить; задавать; }} Общедоступный интерфейс IAuthenticationService {Guid GetIdentifier (строка имя пользователя, строка пароля); } Общественного класса AuthenticationService: IUserMapper, IAuthenticationService {публичного чтения Guid Идентификатор = Guid.NewGuid (); частное чтения строки Имя пользователя = «админы»; частные чтения строка Password = «х»; общественного Guid GetIdentifier (строка имя пользователя, строка пароля) {возвращение (имя пользователя == Имя пользователя && пароль == Password)? Идентификатор: Guid.Empty; } Общественного IUserIdentity GetUserFromIdentifier (Guid идентификатор, NancyContext контекст) {возвращение (идентификатор == Идентификатор)? Новый пользователь {UserName = "админы"}: нуль; }} Класс MyBootstrapper общественности: DefaultNancyBootstrapper {защищен переопределение недействительными ConfigureApplicationContainer (TinyIoCContainer контейнер) {base.ConfigureApplicationContainer (контейнер); . Container.Register () AsSingleton (); }} Приведенный выше код используется мой LoginModule следующим образом. Обратите внимание, что я инъекционный одноплодный экземпляр на уровень приложения в AuthenticationService с помощью конструктора модуля. общественного LoginModule (IAuthenticationService AuthenticationService) {Post [ "/ Войти"] = _ => {Идентификатор вар = authenticationService.GetIdentifier ((строка) Form.Username, (строка) Form.Password); если (identifier.IsEmpty ()) {вернуться Context.GetRedirect ( "~ / Войти ошибка = истина?"); } Вернуть this.LoginAndRedirect (идентификатор); }; } Что должно произойти в том, что, когда пользователь учитывает их имя пользователя и пароль, они проверяются AuthenticationService через GetIdentifier (..) метод. Если учетные данные совпадают, то единственный идентификатор GUID возвращается. Идентификатор GUID всегда будет таким же, потому что он был создан как только для чтения поля и, таким образом, установить один раз, когда синглтон AuthenticationService сначала экземпляр при запуске приложения. Однако, это не так. Вместо двух отдельных экземпляров AuthenticationService созданы, один, который вводится в конструктор LoginModule и используется для вызова метода GetIdentifier (..) и еще один экземпляр, который Нэнси использует для вызова метода IUserIdentity.GetUserFromIdentifier (..). Эти два экземпляра имеют разные идентификаторы GUID и поэтому метод GetUserFromIdentifier (..) всегда возвращает нуль. Я проверил стандартный одноплодный сервис, который не реализует IUserMapper и она работает, как и ожидался, только один экземпляр создается. Таким образом, кажется, что Нэнси инстанцирование IUserMapper одноплодного дважды, один раз для внутреннего использования во время FormsAuthentication, и один раз, чтобы ввести в мой LoginModule конструктор! Вы можете определить свою ошибку? Спасибо Эти два экземпляра имеют разные идентификаторы GUID и поэтому метод GetUserFromIdentifier (..) всегда возвращает нуль. Я проверил стандартный одноплодный сервис, который не реализует IUserMapper и она работает, как и ожидался, только один экземпляр создается. Таким образом, кажется, что Нэнси инстанцирование IUserMapper одноплодного дважды, один раз для внутреннего использования во время FormsAuthentication, и один раз, чтобы ввести в мой LoginModule конструктор! Вы можете определить свою ошибку? Спасибо Эти два экземпляра имеют разные идентификаторы GUID и поэтому метод GetUserFromIdentifier (..) всегда возвращает нуль. Я проверил стандартный одноплодный сервис, который не реализует IUserMapper и она работает, как и ожидался, только один экземпляр создается. Таким образом, кажется, что Нэнси инстанцирование IUserMapper одноплодного дважды, один раз для внутреннего использования во время FormsAuthentication, и один раз, чтобы ввести в мой LoginModule конструктор! Вы можете определить свою ошибку? Спасибо и один раз, чтобы ввести в мой LoginModule конструктор! Вы можете определить свою ошибку? Спасибо и один раз, чтобы ввести в мой LoginModule конструктор! Вы можете определить свою ошибку? Спасибо
biofractal
1

голосов
2

ответ
307

Просмотры

Викторина приложение + одноэлементные классы as3

У меня есть проблемы с радиокнопками, потому что когда я удалить экземпляр со сцены, где радиокнопки есть, если я создаю снова экземпляр в радиокнопках сохраняют последний выбор. (Я написал класс на испанском языке, если у Вас есть проблемы, чтобы определить концепцию, пожалуйста, спросите меня) Класс (crearPregunta.as или askQuestion.as) пакет src.com.akkadian {импорт fl.controls.RadioButtonGroup; импорт flash.display.DisplayObject; импорт flash.display.MovieClip; импорт flash.events *. импорт flash.events.MouseEvent; импорт flash.net *. импорт flash.text *. импорт flash.utils.Timer; импорт flash.xml *. импорт src.com.akkadian.manipularXML; общественного класса crearPregunta расширяет MovieClip {частный статический вар _instance: crearPregunta = NULL; частный вар xmlPath: String; частный вар radioGroup1: RadioButtonGroup = новый RadioButtonGroup ( "Вопросы"); частный вар xmlLoader: URLLoader = новый URLLoader (); частный вар instanciaXML: manipularXML; защищенный время вара: Таймер; частный вар RS: String; частный вар соответственно: XMLList; частный вар Re: XMLList; частный вар до: XMLList; частный вар opSeleccionada: Number; частный вар Результаты: Boolean = False; общественная функция crearPregunta () {} общественная статическая функция деЫпзЬапсе (): crearPregunta {если (_instance == NULL) {_instance = новый crearPregunta (); } Вернуть _instance; } Приватная функция generarContenido () {// Crea экземпляр XML из manipularXML класса this.instanciaXML = manipularXML.generarInstancia (); // Отправляет путь к файлу этого. xmlPath = "SRC / COM / Аккадская / preguntas.xml"; // Добавление слушателя, чтобы продолжить, когда нагрузка закончена xmlLoader.addEventListener (Event.COMPLETE, inXML); xmlLoader.load (новый URLRequest (this.xmlPath)); // добавление слушателя к кнопке SendResponse enviarRespuesta.addEventListener (MouseEvent.CLICK, recibirRespuesta); enviarRespuesta.buttonMode = TRUE; } Публичную функцию validarRespuesta (opcionSeleccionada: String): Boolean {// Параметр выбирается opSeleccionada = количество (opcionSeleccionada); // Генерирует generarContenido контента (); // Отправляем Возвращаемый результат resultado; } Приватная функция inXML (е: Event): пустота {// Добавление радиокнопки в массив вар радиоприемников: Array = [casoA, casoB, casoC]; // Получить данные из данных XML вар = instanciaXML.obtenerInfo (e.target.data); для каждого (вар NODO: XML в data.pregunta) {если (. нодо @ идентификатор == opSeleccionada) {// Сохраняем ответ для выбранного варианта соответственно = data.pregunta [opSeleccionada - 1] .respuesta; // Сохраняет значение для выбранного варианта повторных = data.pregunta [opSeleccionada - 1] .respuesta @ доблесть. // Сохраняет вопрос предварительно = data.pregunta [opSeleccionada - 1] @ предварительно // добавить значение вопроса в динамичный текстовом поле question.text = предварительно. для (вар и: UINT = 0; и <radios.length; U ++) {радиоприемники [и] .group = radioGroup1; радио [и]. textField.multiline = TRUE; радиоприемники [и] .textField.wordWrap = TRUE; радиоприемники [и] .textField.width = 230; радиоприемники [и] .textField.height = 100; радиоприемники [и] .textField.autoSize = TextFieldAutoSize.LEFT; // Добавляем ответы на этикетках радио [и] = .label соответственно [и]; // Добавляют ответы на значение радиоприемники [и] .value = Re [и]; }}}} Приватная функция recibirRespuesta (м: MouseEvent) {для каждого (вар Тре: XML в ре) {// если значение ответа равно значению, сохраненному если (== this.radioGroup1.selection.value повторно ) {// Сохранение результата как истинный this.resultado = истина; // Добавляет значение ответа на текстовое поле, включенные в этом Instance result_txt.text = «Correcto»; } Еще {// Сохраняем результат в виде ложного this.resultado = ложь; // Добавляет значение ответа на текстовое поле, включенные в этом Instance result_txt.text = «Incorrecto»; }} // Добавление функции для создания agregarTimer таймера (); } Приватная функция agregarTimer () {// Установка времени таймера = новый таймер (1000, 1); time.addEventListener (TimerEvent.TIMER_COMPLETE, cerrarTimer); time.start (); } Приватная функция cerrarTimer (т: TimerEvent) {// Просто для информации, Я проверяю, которые являются случаи, которые в настоящее время работавших в главных инстанциях Main.Instancia.obtenerNombreHijos (); // Удаление экземпляра askQuestion из главного Main.Instancia.removeChildAt (2); // Я подтверждаю, что экземпляр удаляется Main.Instancia.obtenerNombreHijos (); // изменить экземпляр класса XML в нуль instanciaXML = NULL; }}} Результат: Что происходит сейчас? Пользователь запустить пустяки: первый, выберите вариант запуска (сетка опций создается) пользователь может выбрать один из вариантов (экземпляр askQuestion создается) Когда пользователь выбирает опцию из радиокнопок (результат отображается на result_txt.text ) таймер выполняется Удалите экземпляр (askQuestion) из главного класса IF пользователя выбрать другой вариант, вопрос и ответы отображаются корректно, но, то радиокнопка сохранить возможность выбранной перед тем и result_txt.text показывает результат этого выбора .. это неправильно, потому что, выбор не должен быть сделано. Я другая ситуация от этого .. Я это: (. Здесь результат операции Этот экземпляр будет удален, когда будет получен результат) статический экземпляр а (здесь создается экземпляр с) статический экземпляр б экземпляр с ( результат отображения) Как я могу сделать, чтобы передать информацию от экземпляра к экземпляру б Ĉ инф экземпляр был создан в экземпляр
m4g4bu
1

голосов
1

ответ
1.8k

Просмотры

Невозможно обновить свойства одноэлементных

Я столкнулся с глупой проблемой, и я попробовал почти все (купил 3 книги, прошел через весь гугле :)), но ничего не помогло. И мне кажется, как решение должно быть очень просто ... Мне нужно, чтобы объявить синглтон в Objective-C (для приложения IOS, если это имеет значение), и он должен иметь некоторые свойства, которые мне нужно обновить из других классов , Но я не могу сделать это - свойства просто не будут обновлять, они имеют то же значение, заданное в «INIT» метод. Я создал простое приложение, чтобы проверить эту проблему. Вот что я сделал: Во-первых, я объявил класс образца и его подкласс, который я собираюсь использовать как собственность одноплодной в: @interface Entity: NSObject @property (неатомическая, сильная, чтение и запись) NSMutableString * имя; @end @implementation Entity имя @synthesize; @end @interface Компания: Entity @property (неатомическая, сильная, чтение и запись) NSMutableString * босс; @property (неатомический) INT рейтинг; @end @implementation компании @synthesize босс, рейтинг; @end Тогда я объявляю сам одноплодный на основе методы, описанной в «Руководстве по программированию IOS по Big Nerd Ranch» книга. Я использую как мой собственный класс и стандартный NSMutableString как свойства, просто для наглядности: @class Общества; @interface CompanyStore: NSObject {NSMutableString * SomeName; } @Property (неатомическая, сильная, чтение и запись) компания * someCompany; @property (неатомическая, сильная, чтение и запись) NSMutableString * SomeName; + (CompanyStore *) магазин; - (пустоты) modifyCompanyProperties; @end @implementation CompanyStore @synthesize someCompany, SomeName; // Объявление общего экземпляра + (CompanyStore *) магазин {статического CompanyStore * storeVar = ноль; если (! storeVar) storeVar = [[супер allocWithZone: ноль] инициализации]; вернуться storeVar; } // Замена стандартного метода allocWithZone + (ID) allocWithZone: (NSZone *) {Зона возврата [само хранилище]; } Затем я инициализировать все свойства с начальными значениями: - (ID) {INIT самостоятельно = [супер INIT]; если (само) {someCompany = [[Alloc компании] INIT]; [SomeCompany setBoss: [NSMutableString stringWithFormat: @ "John Smith"]]; [SomeCompany SetName: [NSMutableString stringWithFormat: @ "MegaSoft"]]; [SomeCompany setRating: 50]; SomeName = [[NSMutableString Alloc] initWithString: @ "Бобби"]; } Самовозврат; } И из другого класса (контроллер представления, который отображает содержимое в представлении): 1. Я получаю значение свойств Синглтона. Все в порядке - я получаю «Джон Смит», «Мегасофт», «Бобби» и 50 для моего Int значения. Значения из моего метода инициализации. 2. изменить свойства одноэлементных от этого вида контроллера (с помощью нескольких способов - я не уверен, в настоящее время, который один является правильным): - (IBAction) modify2Button: (идентификатор) отправитель {CompanyStore * сСт = [CompanyStore магазин]; NSMutableString * имя = [[NSMutableString Alloc] initWithString: @ "Microcompany"]; NSMutableString * босс = [[NSMutableString Alloc] initWithString: @ "Ларри"]; [[[CompanyStore магазин] someCompany] SetName: имя]; cst.someCompany.boss = босс; NSMutableString * strng = [[NSMutableString Alloc] initWithString: @"Джонни"]; [ССт setSomeName: strng]; } ... и тогда я пытаюсь получить значения снова. Я все еще получаю старый набор - «Джон Смит», «Мегасофт» и т.д., даже если когда я поставил точку останова на одной из строк, я могу видеть свойство имя, которое Синглтон является «Microcompany», а не «Мегасофт» На время перерыва ... Но это, кажется, не будет назначен. 3. Затем я пытаюсь другой вещь - я звоню из контроллера зрения частного метода одноплодного, которая назначает другой набор значений для свойств. Это тот метод синглтона: - (недействительными) modifyCompanyProperties {NSMutableString * босс = [[NSMutableString Alloc] initWithString: @ "Джордж"]; NSMutableString * имя = [[NSMutableString Alloc] initWithString: @ "Georgeland"]; [SomeCompany setBoss: босс]; [SomeCompany SetName: имя]; [SomeCompany setRating: 100000]; [SomeName SetString: @ "Николас"]; } 4. Я пытаюсь получить обновленные значения свойств из контроллера представления снова ... и все-таки получить этот «Джон Смит», «Мегасофт» ... Ничего не меняется. Похоже, что свойства одноэлементных устанавливаются только один раз, а потом я не могу изменить их, даже если их атрибуты объявлены как «READWRITE». Похоже, что я не понимаю, что-то простое. Если кто-то может объяснить, как правильно объявить и обновить свойства в одиночках, я был бы очень благодарен. м пытается получить обновленные значения свойств из контроллера представления снова ... и все-таки получить эти «Джон Смит», «Мегасофт» ... Ничего не меняется. Похоже, что свойства одноэлементных устанавливаются только один раз, а потом я не могу изменить их, даже если их атрибуты объявлены как «READWRITE». Похоже, что я не понимаю, что-то простое. Если кто-то может объяснить, как правильно объявить и обновить свойства в одиночках, я был бы очень благодарен. м пытается получить обновленные значения свойств из контроллера представления снова ... и все-таки получить эти «Джон Смит», «Мегасофт» ... Ничего не меняется. Похоже, что свойства одноэлементных устанавливаются только один раз, а потом я не могу изменить их, даже если их атрибуты объявлены как «READWRITE». Похоже, что я не понимаю, что-то простое. Если кто-то может объяснить, как правильно объявить и обновить свойства в одиночках, я был бы очень благодарен.
Andrey
1

голосов
2

ответ
720

Просмотры

Творение класса синглтона с заводским способом

Мой синглтон класс реализует интерфейс, и в будущем можно ожидать много конкретной реализации, чтобы выйти. Я имею в виду создание экземпляра этого класса с помощью фабричного метода. Фабричный метод может быть перегружен. Мой вопрос заключается в том, как хорошо или плохо эта идея?
ramoh
1

голосов
1

ответ
106

Просмотры

Почему я получаю «неразрешенную внешний» при вызове статического атрибута? Visual C ++

хотя есть много ответов на эту тему, я все еще есть проблемы. Я хочу, как и все, чтобы реализовать шаблон Singleton. Я пытался с этим: класс Factory {частное: Factory (Недействительными); Статический Factory * self_inst; общественности: ~ Factory (аннулируются); IPortIO * getStrategy (интермедиат PortType); Статический Factory * деЫпзЬапс () {если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; }}; Проблема возникает, когда я называю * self_inst * в деЫпзЬапсе () статический метод. Многие люди говорили, что при использовании статических переменных, вы должны не только объявить, но определить его где-нибудь в другом месте. Ну, у меня есть проблемы, пытаясь определить его в самом месте: 1 Вне класса: Фабрика * Factory :: self_inst; 2 Вне класса, со значением: Фабрика * Factory :: self_inst = NULL; 3 Внутри статического метода: статический Factory * деЫпзЬапс () {Фабрика * Заводской :: self_inst; если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } 4 и внутри статического метода, но со значением: статический Factory * деЫпзЬапс () {Фабрика * Заводской :: self_inst = NULL; если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } Ничего не работает! В конце концов я решил не создавать статический атрибут в классе, но статической переменной внутри статического метода. Это работает, но это определенно не то же самое, а также не является хорошей практикой программирования, так что я должен делать, если мне нужно, чтобы получить доступ к той же переменной с помощью методов два статики? Это не мое дело, но это хороший вопрос, и я действительно хотел бы знать, если кто-то знает горячей сделать это. Статический Factory * деЫпзЬапс () {Factory * Factory :: self_inst; если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } 4 и внутри статического метода, но со значением: статический Factory * деЫпзЬапс () {Фабрика * Заводской :: self_inst = NULL; если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } Ничего не работает! В конце концов я решил не создавать статический атрибут в классе, но статической переменной внутри статического метода. Это работает, но это определенно не то же самое, а также не является хорошей практикой программирования, так что я должен делать, если мне нужно, чтобы получить доступ к той же переменной с помощью методов два статики? Это не мое дело, но это хороший вопрос, и я действительно хотел бы знать, если кто-то знает горячей сделать это. Статический Factory * деЫпзЬапс () {Factory * Factory :: self_inst; если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } 4 и внутри статического метода, но со значением: статический Factory * деЫпзЬапс () {Фабрика * Заводской :: self_inst = NULL; если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } Ничего не работает! В конце концов я решил не создавать статический атрибут в классе, но статической переменной внутри статического метода. Это работает, но это определенно не то же самое, а также не является хорошей практикой программирования, так что я должен делать, если мне нужно, чтобы получить доступ к той же переменной с помощью методов два статики? Это не мое дело, но это хороший вопрос, и я действительно хотел бы знать, если кто-то знает горячей сделать это. если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } 4 и внутри статического метода, но со значением: статический Factory * деЫпзЬапс () {Фабрика * Заводской :: self_inst = NULL; если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } Ничего не работает! В конце концов я решил не создавать статический атрибут в классе, но статической переменной внутри статического метода. Это работает, но это определенно не то же самое, а также не является хорошей практикой программирования, так что я должен делать, если мне нужно, чтобы получить доступ к той же переменной с помощью методов два статики? Это не мое дело, но это хороший вопрос, и я действительно хотел бы знать, если кто-то знает горячей сделать это. если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } 4 и внутри статического метода, но со значением: статический Factory * деЫпзЬапс () {Фабрика * Заводской :: self_inst = NULL; если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } Ничего не работает! В конце концов я решил не создавать статический атрибут в классе, но статической переменной внутри статического метода. Это работает, но это определенно не то же самое, а также не является хорошей практикой программирования, так что я должен делать, если мне нужно, чтобы получить доступ к той же переменной с помощью методов два статики? Это не мое дело, но это хороший вопрос, и я действительно хотел бы знать, если кто-то знает горячей сделать это. } 4 и внутри статического метода, но со значением: статический Factory * деЫпзЬапс () {Фабрика * Заводской :: self_inst = NULL; если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } Ничего не работает! В конце концов я решил не создавать статический атрибут в классе, но статической переменной внутри статического метода. Это работает, но это определенно не то же самое, а также не является хорошей практикой программирования, так что я должен делать, если мне нужно, чтобы получить доступ к той же переменной с помощью методов два статики? Это не мое дело, но это хороший вопрос, и я действительно хотел бы знать, если кто-то знает горячей сделать это. } 4 и внутри статического метода, но со значением: статический Factory * деЫпзЬапс () {Фабрика * Заводской :: self_inst = NULL; если (self_inst == NULL) self_inst = новый завод (); вернуться self_inst; } Ничего не работает! В конце концов я решил не создавать статический атрибут в классе, но статической переменной внутри статического метода. Это работает, но это определенно не то же самое, а также не является хорошей практикой программирования, так что я должен делать, если мне нужно, чтобы получить доступ к той же переменной с помощью методов два статики? Это не мое дело, но это хороший вопрос, и я действительно хотел бы знать, если кто-то знает горячей сделать это. В конце концов я решил не создавать статический атрибут в классе, но статической переменной внутри статического метода. Это работает, но это определенно не то же самое, а также не является хорошей практикой программирования, так что я должен делать, если мне нужно, чтобы получить доступ к той же переменной с помощью методов два статики? Это не мое дело, но это хороший вопрос, и я действительно хотел бы знать, если кто-то знает горячей сделать это. В конце концов я решил не создавать статический атрибут в классе, но статической переменной внутри статического метода. Это работает, но это определенно не то же самое, а также не является хорошей практикой программирования, так что я должен делать, если мне нужно, чтобы получить доступ к той же переменной с помощью методов два статики? Это не мое дело, но это хороший вопрос, и я действительно хотел бы знать, если кто-то знает горячей сделать это.
Nachokhan
1

голосов
1

ответ
205

Просмотры

AS3 Access stage object in singleton returns null

I know singletons are sensitive subjects, but I really don't want to hear anything about that, or what you think about this implementation. This question is not about that. So, I have implemented a singleton using a static var with the instance. private static var instance:SomeClass = new SomeClass(); public static function getInstance():SomeClass { return instance; } SomeClass is a class in the library, and inside that one there some instance called someSymbol. For some reason, when I use SomeClass as a singleton, every time I want to access someSymbol I get Cannot access a property or method of a null object reference. But if I implement SomeClass with regular instantiation the error disappears. I've tried accessing someSymbol in different ways but I always get the error. someSymbol.rotation = 0; and also var aSymbol = getChildByName("someSymbol"); aSymbol.rotation = 0; and also trace(someSymbol); // null trace(this['someSymbol']); // null trace(SomeClass.instance.someSymbol); // throws error So why do I get null when using this singleton implementation, and not when instantiating the class as usual? Edit: Thanks to @Marty Wallace answer, I changed my singleton implementation and now it works. So, instead of instantiating the instance this way: private static var instance:SomeClass = new SomeClass(); I instead instantiate it the first time getInstance() is called, as @Marty does it. I don't know exactly what is going on behind the curtains, but it seems as if SomeClass wasn't fully exported when instantiating before the document class is running.
Pier

Просмотр дополнительных вопросов