У меня есть эти методыМожно ли использовать класс как параметр API?
public class ReportService
{
public DataTable GetCustomerReportDataTable(String dateFrom, String dateTo, String cif, String customerName, String region, String branch, String salesCode);
public DataTable GetProductReportDataTable(String dateFrom, String dateTo, String cif, String customerName, String product, String region, String branch, String salesCode);
}
И хотят, чтобы реорганизовать его (ниже) на основе this и this
public class CustomerReportFilter
{
public String DateFrom { get; set; }
public String DateTo { get; set; }
public String CIF { get; set; }
public String CustomerName { get; set; }
public String Region { get; set; }
public String Branch { get; set; }
public String SalesCode { get; set; }
}
public class ProductReportFilter
{
public String DateFrom { get; set; }
public String DateTo { get; set; }
public String CIF { get; set; }
public String CustomerName { get; set; }
public String Product { get; set; }
public String Region { get; set; }
public String Branch { get; set; }
public String SalesCode { get; set; }
}
public class ReportService
{
public DataTable GetCustomerReportDataTable(CustomerReportFilter filter);
public DataTable GetProductReportDataTable(ProductReportFilter filter);
}
Вопрос:
Что делать, если API Вызывающий из других язык/технологии?
Они были бы привязаны к CustomerReportFilter
и ProductReportFilter
классам.
Если я создаю построитель, это в основном то же самое, если я изменю параметр на свойство. Это означает, что это необязательно, не так ли? Если я хочу, чтобы все параметры были обязательными. Является ли шаблон конструктора без проверки IsNullOrEmpty подходящим? – asakura89
В функции build() строителя вы можете проверить правильность параметров. Даже если все параметры являются обязательными, использование Builder имеет смысл, так как легко случайно изменить параметры в таком длинном списке строк, тогда как Builder дает более легкую семантику. –