С DDD и некоторыми другими принципами абстракции, когда возникает необходимость в создании экземпляров нестабильных экземпляров (отрицание стабильных C# экземпляров и примитивов), logi c для шаблона Factory имеет смысл (иногда) при необходимости определить бизнес-логи c во время создания экземпляра (преимущества безопасности, производительность с возможным отсутствием необходимости выделения памяти для нового и т. д. c.), однако, что, если экземпляру не требуются какие-либо логики создания экземпляра c, а сам а также другие связанные модели используются в нескольких местах одного и того же класса (пример представляет собой очень упрощенный код, созданный ниже ... изменение publi c на минимальные привилегии, где это возможно, et c.)
Есть ли преимущества абстрагирования экземпляра в шаблоне фабрики по сравнению с встроенным экземпляром (будь то инверсия зависимостей или другое)? ... большинство поисков, которые я нашел, касаются плюсов и минусов фабричного шаблона, альтернатив, stati c vs DI (Bloch's Effective Java), et c.
public interface IUserTypeFactory
{
User CreateUser();
Admin CreateAdmin();
Reporter CreateReporter();
}
public class UserTypeFactory : IUserTypeFactory
{
public User CreateUser() => new User();
public Admin CreateAdmin() => new Admin();
public Reporter CreateReporter() => new Reporter();
}
public class UserService
{
private readonly IUserTypeFactory _userTypeFactory;
public UserService(IUserTypeFactory userTypeFactory) => _userTypeFactory = userTypeFactory;
public void DoSomething()
{
var user = _userTypeFactory.CreateUser();
// .. business logic
}
// More Methods requiring instantiation
}