У меня есть сценарий, в котором фабрика может создать дешевый или дорогой велосипед.Сокращение списка параметров фабрики
public class BikeFactory : IBikeFactory
{
public T GetInstance<T>(Guid userId, string bikeName, string bikeDescription, decimal value, DateTime shippingDate) where T : EntityBase
{
if (typeof(EntityBase).IsAssignableFrom(typeof(T)) && typeof(T) == typeof(ExpensiveBike))
{
Information bikeInfo = new Information(bikeName,bikeDescription, value, shippingDate);
return (T)Activator.CreateInstance(typeof(T), userId, newIfo);
}
else if (typeof(EntityBase).IsAssignableFrom(typeof(T)) && typeof(T) == typeof(CheapBike))
{
Information bikeInfo = new Information(bikeName,bikeDescription, value, shippingDate);
return (T)Activator.CreateInstance(typeof(T), userId, newIfo);
}
else return null; //for now
}
}
обе сущности CheapBike и ExpensiveBike провести ValueObject информацию, которая описывает их (хранит основную информацию о них). Как вы можете видеть список параметров некрасиво, но она есть, так что параметры приведены в Информационном consturctor
Information(bikeName, bikeDescription, vlaue, shippingDate)
и конструктор CheapBike и ExpensiveBike (имеет идентификатор владельца велосипеда)
CheapBike(Guid owner, Information bikeInformation) // same for Expensive
Я ищу способ, чтобы уменьшить число параметров, так что фабричный метод GetIstance() будет выглядеть следующим образом:
public T GetInstance<T>(Guid userId, Inforamtion bikeInfo) where T : EntityBase
Вопрос:
Должен ли я позволить клиенту построить информационный ValueObject через ValueObject завод и передать его в Bikefactory?
VOfactory.GetInstance<Inforamtion>(infoDto.name, infoDto.description, infoDto.value, infoDto.shippingDate) Efactory.GetInstance<CheapBike>(userId, bikeInfo)
Или просто позвольте клиенту построить объект Information ValueObject?
Information bikeinfo = new Information(infoDto.name, infoDto.description, infoDto.value, infoDto.shippingDate);
Действительно ли это действительный подход?
Это действительный подход, если ценность, которую вы получаете от него, стоит всей сложности. Почему родовая фабрика в первую очередь? – guillaume31