Как повторно использовать код контроллера для представлений, сохраняя доступ к указанным c свойствам? - PullRequest
0 голосов
/ 16 апреля 2020

Представьте себе приложение Java Swing или Winforms. У меня есть некоторые формы или представления в моем приложении, каждое из которых связано с контроллером. В каждом контроллере у меня есть ссылка на конкретное представление c, например:

public class Controller1 {
  ExtendedForm1 view;
}

public class Controller2 {
  ExtendedForm2 view;
}

Это позволяет мне получить доступ к определенным c publi c членам в каждой форме.

Но я хочу написать несколько распространенных методов, например, HideView (). Я не хочу повторять код, поэтому я создаю BaseController и создаю его подкласс, но затем возникает проблема. Представьте себе:

public abstract class BaseController {
  protected Form view;

  protected void HideView() {
    // hides the view
  }
}

public class Controller1 extends BaseController {
  public Controller1() {
    view = new ExtendedForm2();
  }
}

Теперь я могу просто вызвать метод HideView во всех моих контроллерах, но у меня нет доступа к указанным c элементам управления представлений из них. Как это решить?

При написании этого я думал об использовании двух ссылок для формы, одна в BaseController с типом формы, а другая в каждом расширенном контроллере с указанным типом формы c, но я думаю, что это выглядит немного странно .. .

...