У меня есть класс под названием SignupForService
, который представляет собой приложение, которое пользователь может отправить, чтобы подписаться на наш сервис. Он имеет много полей, некоторые из них включают «имя», «фамилия».шаблон проектирования для обмена свойствами
У меня есть другой класс, который моделирует форму, которую пользователь должен заполнить как часть этого приложения. В нем есть поля, такие как «имя, возраст, foo, bar ...». Назовем этот класс Form2
SignupForService2
Я хочу использовать тот же FirstName, что и на SignupForService
. Я хочу, чтобы они были полностью связаны друг с другом.
Лучшее, что я могу придумать, это использование композиции, но отправка ссылки родительскому классу. Как это:
public class SignupForService2
{
public SignupForService2(SignupForService parent)
{
_parent = parent;
}
private SignupForService _parent;
public string FirstName
{
get{
return _parent.FirstName
}
}
//more stuff here
}
public class SignupForService
{
public string FirstName;
public SignupForService2 signupForService2;
}
Причина, почему я не просто поставить свойства все на классе SignupForService, потому что это становится слишком раздутым, и логически можно разделить на этой SignupForService2
(это все или ничего для поля). Я также не могу просто унаследовать систему RegistrationForService в RegistrationForService2, потому что у нее много полей, которые не имеют смысла иметь на RegistrationForService2. (У меня также есть другие случаи, такие как RegistrationForService3, RegistrationForService4 ..)
Есть ли шаблон дизайна, который лучше решает это, или имя для этого шаблона, о котором я не знаю, и это может быть описано мне лучше? Я хочу знать плюсы и минусы этого подхода.
Большое спасибо
Поиск * обязательный *. – MarcinJuraszek
Возможно, вы не захотите переопределить класс приложения при работе с WinForms или WPF; новый разработчик, имеющий опыт работы в любом случае, будет запутан, если это не класс WinForms/WPF. (На всякий случай этот пример имеет какую-то основу в действительности) –
@AustinSalonen, 'Application' и 'Form2' - это просто немые классы, которые не должны иметь ничего общего с пользовательским интерфейсом. Хотя в этом случае я привязываю их к странице ASP.NET. – user3010678