@Romario21

Правильно ли я подхожу к решению задачи(Java организация класса)?

Всем привет, подскажите правильно ли я подхожу к решению задачи?
Есть левое меню, которое может быть FULLSIZE(текст+иконки+лабуда) и MINISIZE(иконки)
Делаю есть основной класс(контейнер) и вложенные блоки(внутренние классы), в одном из внутренних блоков есть кнопка "Изменить размер".

Псевдокод:

//Главный класс, контейнер для вложенных блоков
class LeftMenu  {
     Logo logo;
     Menu menu;
     LeftMenu context;
     //Конструктор
      {
       this.context = this;
       setWidth(200px)
      
       logo = new Logo(); //Блок логотипа
       menu = new Menu(); //Само меню
       addComponent(logo,menu)
     }

     void changeSize(){
         logo.changeSize();
         menu.changeSize()
      }

    //Внутренние классы   
    class Logo implement ResizeInterface{
        ......
       Button btnChangeWidth = new Button();
       btnChangeWidth.addOnClickListener(e->context.changeSize())//Метод основного класса
      @override
       void changeSize(){
         setWidth(50px)
       }
    } 

    class Menu implement ResizeInterface{
        ......

      @override
       void changeSize(){
         setWidth(50px)
       }
    } 
}
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
EreminD
@EreminD
Кое-что умею
В целом, выглядит осмысленно
  1. Классы Logo и Menu можно вынести в отдельные файлы - это, в будущем, поможет вам не теряться в коде (когда классов становится много и выясняется, что в одном файле больше одного класса, начинаешь теряться)
  2. Не очень ясно по коду
    {
           context = this;
           setWidth(200px)
          
           logo = new Logo(); //Блок логотипа
           menu = new Menu(); //Само меню
           addComponent(logo,menu)
         }

    Что такое context и где объявлен метод addComponent, setWidth. Если вы ничего не вырезали из кода, когда сюда выкладывали, то не понятно, как он у вас выполняется
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Sirikid
Так себе, сохранять this в переменную, чтобы использовать из вложенного класса, вообще дичь. Вложенные классы здесь не нужны. Псевдокод зацикливается.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы