Этот вопрос является продолжением моего предыдущего поста здесь .Мартиньо попросил меня предоставить больше информации о моей системе.У него есть предположение, что может быть лучший способ добиться того, что я пытаюсь сделать.Итак, если есть вопрос здесь, я думаю, мне интересно, если это плохой дизайн?Если так, что можно улучшить и как (лучше всего я учусь на иллюстрациях).Спасибо.
Я работаю над промежуточным программным обеспечением для приложения iPhone.
Вместо того, чтобы явно вызывать различные объекты из клиента, разработчики хотят использовать обобщенные элементы, где «Группа» возвращает строку JSON на основе переданного параметра.Параметр представляет собой первый экран, который пользователь видит при входе в систему. Мы называем экран входа в систему «приборной панелью».
Итак, когда клиент вызывает метод сервера:
Contracts.GroupDto IDashboardService.GetGroupById(string groupId)
{
var obj = GroupRepository.GetGroupById(groupId);
return new Contracts.GroupDto
{
...
};
}
Сервер использует метод GroupRepository GetGroupById для возврата универсального типа объекта:
public static IList<G> GetGroupById<G>(int groupId)
{
DashboardGroupType type = (DashboardGroupType)groupId;
IList<G> result = new List<G>();
var obj = default(G);
switch (type)
{
case DashboardGroupType.Countries:
break;
case DashboardGroupType.Customers:
// this returns a list of typ IEnumerable<Customer>
obj = (G) CustomerRepository.GetAllCustomers();
break;
case DashboardGroupType.Facilities:
// this returns a list of typ IEnumerable<Facility>
obj = (G) FacilityRepository.GetAllFacilities();
break;
case DashboardGroupType.Heiarchy:
break;
case DashboardGroupType.Lines:
break;
case DashboardGroupType.Regions:
// this returns a list of typ IEnumerable<string>
obj = (G) CustomerRepository.GetRegionsHavingCustomers();
break;
case DashboardGroupType.States:
// // this returns a list of typ IEnumerable<Customer>
obj = (G) CustomerRepository.GetStatesHavingCustomers();
break;
case DashboardGroupType.Tanks:
break;
default:
break;
}
result.Add(obj);
return result;
}
ОбъектВозвращаемый тип основан на параметре, переданном в GetGroupById.Например, если значение равно 1, метод просматривает перечисление DashboardGroupType:
и передает параметр 1, сервер просматривает следующее перечисление:
public enum DashboardGroupType
{
Countries = 0,
Regions = 1,
Customers = 2,
Facilities = 3,
Lines = 4,
Tanks = 5,
States = 6,
Heiarchy = 7
}
и возвращаетсписок регионов типа IEnumerable для вызывающего клиента.
Есть ли какие-либо мысли относительно этого дизайна (особенно относительно метода IList GetGroupById (int groupId)? Если у вас есть предложения, я был бы признателен за иллюстрацию вашего улучшения.
Заранее спасибо.