Шаблоны Java. Состояние (State)

แชร์
ฝัง
  • เผยแพร่เมื่อ 3 ม.ค. 2025

ความคิดเห็น • 21

  • @бычара
    @бычара 4 ปีที่แล้ว +4

    Ну это однозначный лайк! Очень полезно! Автор вы молодец! Жду новых видео

  • @LAZIO14
    @LAZIO14 ปีที่แล้ว

    Да, было очень интересно и понятно! Жду новых видео по Java

  • @alexanderkostyuk755
    @alexanderkostyuk755 6 ปีที่แล้ว +8

    Я бы сказал так, что: - Когда применяется данный паттерн(State):
    - "Когда необходимо уйти от многочисленных условных конструкций". У вас Вы добавляете "многочисленные условные конструкции" в Методе NextStation() класса Radio, и вы вдобавок нарушили один из принципов SOLID - "Liskov substitution principle". Т.Е. нам нужно уйти он условных конструкций с помощью Этого Патерна, а увас получилось так что вы наоборот пришли к ним. Я бы преределал Так: public interface IStation
    {
    void Play();
    IStation NextStation();
    }
    public class RadioFm : IStation
    {
    public void Play()
    {Console.WriteLine("Radio FM");}
    public IStation NextStation()
    {return new RadioFora();}
    }
    public class RadioFora : IStation
    {
    public void Play()
    {Console.WriteLine("Radio Fora");}
    public IStation NextStation()
    {return new RadioFm();}
    }
    public class Radio
    {
    public IStation Station;
    public void NextStation()
    {Station = Station.NextStation();}
    public void Play()
    {Station.Play();}
    }
    и
    Radio radio = new Radio {Station = new RadioFm()};
    radio.Play();
    radio.NextStation();
    radio.Play();
    Спасибо!!!

    • @ВасилийГоловко-д9и
      @ВасилийГоловко-д9и 6 ปีที่แล้ว

      да ты правильно написал. сам так же реализовывал этот паттерн и видел другие реализации таким способом

    • @TheMerdontv
      @TheMerdontv 5 ปีที่แล้ว +2

      твой код жестко связан и ничем не отличается от примера автора.

  • @ALEX-pi1zs
    @ALEX-pi1zs 5 ปีที่แล้ว +4

    Для тех кто не понял, почему в последнем примере вывелось 8 строчек вместо 10, поясню:
    чтобы вывелось 10 строчек, надо добавить в методе doSometing(Human human) класса Weekend ещё одну строчку в последнем блоке else :
    human.doSomething();

  • @oleksandr-petrovych
    @oleksandr-petrovych 8 ปีที่แล้ว +1

    Объек состояния будет сам менять состояние контекста. Изнутри ? Примеры какие то совсем не понятные. Где и когда нужно применять этот шаблон ?

    • @lichlichi
      @lichlichi 6 ปีที่แล้ว +1

      Везде где есть набор каких либо подклассов объекта. Например у тебя есть класс Фильм, фильмы бывают разных жанров. Вот State будет Жанром фильма со своими подклассами(фэнтези, комедии, боевики), а контекстом будет просто Movie с агрегацией на Жанр.

  • @nikolaygoltsov1782
    @nikolaygoltsov1782 8 ปีที่แล้ว +3

    Доходчиво и понятно.

  • @toxicknight3079
    @toxicknight3079 6 ปีที่แล้ว

    Так и не понял почему в примере с Human вывело 8 сообщений, а не 10, хотя в цикле было прописано именно 10 итераций.

  • @torcher5023
    @torcher5023 3 ปีที่แล้ว

    А зачем нужны все эти паттерны, если в итоге всё сводится к ифам?

    • @torcher5023
      @torcher5023 3 ปีที่แล้ว

      Ох уж эти программисты-анальники со своим юмором

  • @angular-developer-e1t
    @angular-developer-e1t 7 ปีที่แล้ว +1

    eclipse козлом обозвали. Он обиделся и ушёл. А если серьёзно - оказывается Redux на шаблоне State построен

  • @user_drew25
    @user_drew25 7 ปีที่แล้ว +1

    всё вроде работает
    я только не понял почему при счётчик цикла
    for (int i = 0; i < 10 ; i++) { h.doSomething(); }
    i = 10
    на выходе получаем
    Работаем!!!
    Отдыхаем(Zzz)
    Отдыхаем(Zzz)
    Отдыхаем(Zzz)
    Работаем!!!
    Отдыхаем(Zzz)
    Отдыхаем(Zzz)
    Отдыхаем(Zzz)
    то есть 8 строчек а не 10
    я потестил со счётчиком i=1, i=2, i=3, i=4 получаем ожидаемые 1 , 2, 3 и 4 строчек соответственно,
    а вот при i = 5 получаем почему то не 5 строчек а те же 4 как т при i = 4
    то есть теряется 1 итерация что ли?
    Я не шибко опытный кодер может ребята поопытнее меня найдут почему так и исправят ошибку?
    Автор, спасибо всё очень доходчиво .

  • @narekf
    @narekf 5 ปีที่แล้ว +2

    дядя, если ты действительно хочешь своими уроками помочь, тебе нужно поработать над тем, чтоб ПРАВИЛЬНО излагать мысли, а не чтоб зритель сам всё склеивал у себя в голове

  • @paradise_cracked
    @paradise_cracked 7 ปีที่แล้ว

    thx

  • @васявасев-р2ш
    @васявасев-р2ш 6 ปีที่แล้ว

    говноуроки от говногуру

    • @lichlichi
      @lichlichi 6 ปีที่แล้ว

      Обоснуешь, или просто насрать в коменты решил?

    • @alexandrdeveloper1242
      @alexandrdeveloper1242 6 ปีที่แล้ว +1

      c категоричностью выше насравшего не согласен, но однако есть сомнения в правильности показанного. Шаблон "состояние" относится к группе структурных и из названия ясно что его задача именно хранить состояния Это тесно переплетается с шаблоном flyweight (не помню русского названия) - при присвоении сохраненного состояния к объекту flyweight он становится полновесным объектом считывая из объекта "состояния" свое новое состояние. Сам объект стэйт ничего не меняет Он призван создать абстракцию именно хранения данных А то что в видео больше похоже на машину состояний Возможно путанница с названиями...