Платформа объекта: Singletonish ObjectContext - хороший, плохо, или сверхвзгляды?

Функции GDScript не являются объектами, как в Python. Таким образом, вы не можете напрямую ссылаться на функцию.

Тем не менее, вы можете косвенно ссылаться на них по имени, используя их связанный экземпляр.

Например, со следующей функцией:

func hello():
    print('Hello')

Вы можете вызывать функцию для экземпляра по имени:

call('hello') # prints 'Hello'

Вы можете сохранить экземпляр и имя с помощью funcref(): [1112 ]

var ref = funcref(hello_object_instance, 'hello')
ref.call_func() # prints 'Hello'
takes_func_ref_to_call_later(ref) # later, prints 'Hello'

FuncRef.call_func() делает то же самое, что и object_instance.call(), просто оборачивает его в объект.

Из-за этого, как показали Object.connect() и друзья, общая функция для функций обратного вызова такова:

func deferred_finish(param1, param2, callback_obj, callback_func):
    # ... do something
    callback_ref = funcref(callback_obj, callback_func)
func _process(delta):
    if _finished:
        callback_ref.call_func()
func _enter_tree():
    deferred_finish('hello', 'world', self, 'finished_callback')

Надеюсь, это поможет. Дайте мне знать, если вам нужны какие-либо разъяснения.

9
задан Programmin Tool 12 February 2009 в 18:10
поделиться

3 ответа

Вы реализуете эквивалент сессии NHIBERNATE на шаблон запроса, который является хорошей конструкцией в NHibernate. В то время как я не могу сказать, что 100% наверняка, что это применимо к EF это, скорее всего. Далее подробно останавливанием на других шаблонах управления сеансами является Сессия на Бизнес-Разговор, который позволяет NHibernate расширять проведение сессии по продолжительности HttpSession путем разъединения и повторного подключения сессии в противоположность уничтожению и созданию. Если EF позволяет подобную способность в противоположность хранению статического открытого соединения, Вы могли бы посмотреть на то, как я реализовал тот шаблон с помощью AOP на моем блоге через мой профиль.

6
ответ дан 4 December 2019 в 20:25
поделиться

При попытке реализовать что-то как NHibernate, делает с его Сессией, я думаю, что это - хорошая идея иметь этот вид шаблона. Я знаю наверняка, что в LinqToSql реализация объекта контекста больше похожа на entrypoint класс, это - действия как фасад. Я хотел бы думать, что LinqToEntities подобен. У Вас могла быть реализация фабрики для получения datacontext к модели, где можно переработать datacontext. Если Вы идете одиночным элементом, путь рассматривает узкое место, доступность и ответственность одноэлементного объекта.

1
ответ дан 4 December 2019 в 20:25
поделиться

Ознакомьтесь с этой записью в блоге , в которой представлены некоторые дополнительные сведения о создании синглтона для контекста Entity Framework и почему это не работает в ASP.NET, и предлагает решение, которое делает нечто подобное, как вы предлагаете.

4
ответ дан 4 December 2019 в 20:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: