Я не понимаю, какой шаблон использовать / лучше всего подходит для моих требований. Надеюсь, вы сможете уточнить. Не уверен, использовать ли строителя или фабрику.
Сценарий такой.
Создайте объект запроса и передайте его стороннему компоненту, который я не могу контролировать
Запрос может быть разных типов - EmployeeRequest-WorkerRequest-etc ... и каждый запрос будет иметь методы типа "GetXXX" -GetYYY "и т. Д.
Пример Нодди
Я сделал следующее:
class Program
{
static void Main()
{
Request employeeRequest = new EmployeeRequest { Id=1,FirstName = "Foo", LastName = "Bar" };
Service myservice=new Service();
var response = myservice.DoSomething(employeeRequest);
//do something with the response ...
}
}
public class Service
{
public Response DoSomething(Request request)
{
Factory factory = new Factory();
Request myRequest = factory.Create(request);
//Call my third party component
//Response myResponse = MyThirdPartyComponent.DoSomething(myRequest);
//return myResponse;
return new Response();
}
}
public class Factory
{
public Request Create(Request request)
{
if (request is EmployeeRequest)
{
EmployeeRequest employeeRequest = new EmployeeRequest();
employeeRequest.FirstName = request.FirstName;
employeeRequest.LastName = request.LastName;
return employeeRequest;
}
else
{
WorkerRequest workerRequest = new WorkerRequest();
workerRequest.FirstName = request.FirstName;
workerRequest.LastName = request.LastName;
return workerRequest;
}
}
}
public abstract class Request
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Response
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class EmployeeRequest : Request
{}
public class WorkerRequest : Request
{}
public class EmployeeResponse : Response
{}
public class WorkerResponse : Response
{}
Если бы вы реализовали это, как бы вы это сделали:
Спасибо