Фабричный объект - это объект, единственной целью которого является создание (создание) других объектов.NHibernate использует SessionFactory для управления созданием ISessions.
По той же мере - ProxyFactoryFactory создает фабрику, которая может производить прокси.Большая проблема, которую он решает, заключается в том, что он позволяет поддерживать уровень абстракции в коде, так что двум отдельным модулям не нужно понимать детали реализации друг друга (т.е. конкретные экземпляры) для совместной работы.
Еслинам нужно было создать новый NHibernate SessionImpl, когда мы хотели открыть сессию, нам нужно было иметь возможность предоставлять все его зависимости в локальной области.Вот код из SessionFactoryImpl в NHibernate, который фактически создает сеанс:
SessionImpl session = new SessionImpl(connection, this, autoClose, timestamp, sessionLocalInterceptor ?? interceptor,
settings.DefaultEntityMode, settings.IsFlushBeforeCompletionEnabled,
settings.IsAutoCloseSessionEnabled, settings.ConnectionReleaseMode);
Я бы предпочел просто использовать
sessionFactory.OpenSession();
, чем управлять всеми этими зависимостями;)