2013-11-19 5 views
1

У меня есть класс под названием 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 ..)

Есть ли шаблон дизайна, который лучше решает это, или имя для этого шаблона, о котором я не знаю, и это может быть описано мне лучше? Я хочу знать плюсы и минусы этого подхода.

Большое спасибо

+1

Поиск * обязательный *. – MarcinJuraszek

+0

Возможно, вы не захотите переопределить класс приложения при работе с WinForms или WPF; новый разработчик, имеющий опыт работы в любом случае, будет запутан, если это не класс WinForms/WPF. (На всякий случай этот пример имеет какую-то основу в действительности) –

+0

@AustinSalonen, 'Application' и 'Form2' - это просто немые классы, которые не должны иметь ничего общего с пользовательским интерфейсом. Хотя в этом случае я привязываю их к странице ASP.NET. – user3010678

ответ

0

Хорошо, что вы хотите знать, как делать вещи правильно.

Попробуйте прочитать о MVC, MVVM, IoC, DI. Это довольно много чтения, а не самое легкое для понимания в начале, но все это как-то относится к проблеме, которую вы пытаетесь решить.

Как правило, вы будете выбирать разные подходы в зависимости от того, создаете ли вы WinForms, WPF, ASP.NET или ASP.NET MVC-приложение.

+0

Хороший совет, но не ответ ... должен быть в разделе комментариев. –

Смежные вопросы