powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / цепочка методов
31 сообщений из 31, показаны все 2 страниц
цепочка методов
    #39901910
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Подскажите пожалуйста, как организовать вывод цепочки методов, последовательно? Сейчас объясню что имею в виду.
К примеру есть класс SomeClass , и у него есть два метода 1) Задать характеристики 2) Снять значение после ввода характеристик.
Ну пусть к примеру они будут называться 1) createParameters 2) showResult и модификатор доступа у обоих - public

Классическая схема вызова:
Код: java
1.
2.
3.
SomeClass sm = new SomeClass();
sm.createParameters();
sm.showResult();



Но хотелось бы найти возможность создания примерно такого варианта обращения:
Код: java
1.
2.
SomeClass sm = new SomeClass();
sm.createParameters().showResult();



Подскажите пожалуйста, как такое организовать? И чтобы видимость у второго метода showResult появлялась только после вызова первого createParameters .
...
Рейтинг: 0 / 0
цепочка методов
    #39901927
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

очевидно, что метод должен тупо возвращать указатель на экземпляр класса
...
Рейтинг: 0 / 0
цепочка методов
    #39901929
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,
А пример можете показать?)
...
Рейтинг: 0 / 0
цепочка методов
    #39901932
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов

Подскажите пожалуйста, как такое организовать? И чтобы видимость у второго метода showResult появлялась только после вызова первого createParameters .

Ну это тебе в скалу) там такое легко.

На Java можно что-то типо такого сделать -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
class Builder(){
   public WithParams setParams(Map params) = {
       return new WithParams(params);
   }
}

class WithParams {
   private params = new HashMap();
  public WithParams(Map params) = {
     this.params = params;
  }

   public void run(){
   // do someth with params
}
}
...
Рейтинг: 0 / 0
цепочка методов
    #39901933
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа того:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class SomeClass {
    public SomeClass createParameters() {
        // Do something...

        return this;
    }

    public void showResult() {
        // Do something...
    }
}
...
Рейтинг: 0 / 0
цепочка методов
    #39901934
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хочешь понять как это делается в развитом языке - то смотри тут https://medium.com/@maximilianofelice/builder-pattern-in-scala-with-phantom-types-3e29a167e863
...
Рейтинг: 0 / 0
цепочка методов
    #39901935
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Типа того:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class SomeClass {
    public SomeClass createParameters() {
        // Do something...

        return this;
    }

    public void showResult() {
        // Do something...
    }
}



И чем ему это поможет?
...
Рейтинг: 0 / 0
цепочка методов
    #39901936
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух, забыл ник , вкурил, большое спс за оперативность!)
...
Рейтинг: 0 / 0
цепочка методов
    #39901943
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

вообще это называется Fluent Interface: https://java-design-patterns.com/patterns/fluentinterface/
а цепочка методов - это когда вы вызываете метод, что возвращает некий объект, у которого можно вызвать следующий метод
...
Рейтинг: 0 / 0
цепочка методов
    #39901947
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще Builder/SuperBuilder в ломбок есть ну или хотя бы плагины в IDEA для генерации этого boilerplate
...
Рейтинг: 0 / 0
цепочка методов
    #39901948
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,
да, возврат класса в методе с последующим обращением к нему как к классу это решение. Сам не допер,затупил, ех, решение так близко по сути было)
...
Рейтинг: 0 / 0
цепочка методов
    #39901954
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Билдер можно сделать умным. Чтоб исключал дублирование заполнения свойств. Или делал какие-то шаблоны
объектов на конструкторе а потом добивал их свойствами.
...
Рейтинг: 0 / 0
цепочка методов
    #39901966
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, все завелось. Огонь)

Небольшой пример на тестовом жертвенном классе Cars) :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
public class Cars {
    private String model;
    private int year;
    private static ArrayList<Cars> listCars;

    public Cars() {

    }
    public Cars(String model, int year) {
        this.model = model;
        this.year = year;
    }
    private String getModel() {
        return model;
    }
    private int getYear() {
        return year;
    }
    public  Cars makeCars(int quantity) {
        listCars = new ArrayList<>();
        for (int i = 1; i <= quantity; i++) {
            listCars.add(new Cars("Volvo", 2000 + i));
        }
        return this;
    }
        public  void showCars () {
            for (Cars car : listCars) {
                System.out.println(car.getModel() + " год выпуска: " + car.getYear());
            }
        }

    }




и вызов:

Код: java
1.
2.
Cars cr = new Cars();
cr.makeCars(6).showCars();



Отлично)
...
Рейтинг: 0 / 0
цепочка методов
    #39901975
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Отлично)
толко пример придумай чтобы ценность была видна.
Тут ценность равна нулю.
...
Рейтинг: 0 / 0
цепочка методов
    #39901979
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так?

Код: java
1.
cr.showCars().makeCars(6);
...
Рейтинг: 0 / 0
цепочка методов
    #39901980
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Механику понял главное. Слепил из того что было под рукой)
...
Рейтинг: 0 / 0
цепочка методов
    #39901982
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
PetroNotC Sharp,

Механику понял главное. Слепил из того что было под рукой)
ты не спутал со Stream.... механику?))
...
Рейтинг: 0 / 0
цепочка методов
    #39901984
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов, не увлекайся сильно. Должно быть чувство меры по отношению к написанным буквам и эффекту от решения задачи.
...
Рейтинг: 0 / 0
цепочка методов
    #39901985
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
а так?

Код: java
1.
cr.showCars().makeCars(6);


return this;
во все методы вставит)))
...
Рейтинг: 0 / 0
цепочка методов
    #39901988
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
а так?

Код: java
1.
cr.showCars().makeCars(6);



А так уже простым примером не обойтись) Придется действительно прописывать условия дополнительные , проверять попутно наличие дубликатов и ставить очередность выполнения в условии. Я думаю смогу написать какое нибудь корявое решение, но знаний и практики в JAva у меня не так много.
...
Рейтинг: 0 / 0
цепочка методов
    #39901989
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
но знаний и практики в JAva у меня не так много.
а кто задачу ставил?
...
Рейтинг: 0 / 0
цепочка методов
    #39901994
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Я сам себе по Java ставлю задачи) Поздно уже дергаться на программиста
...
Рейтинг: 0 / 0
цепочка методов
    #39901997
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
PetroNotC Sharp,

Я сам себе по Java ставлю задачи) Поздно уже дергаться на программиста
понятно. Возврат this это Г. решение.
Удачи!
...
Рейтинг: 0 / 0
цепочка методов
    #39901998
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может конструктора с параметрами хватило-бы?
...
Рейтинг: 0 / 0
цепочка методов
    #39902000
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,
хотя еще подергаться потрепыхаться смог бы, если бы практически без опыта в Java (на любую зп даже согласен на начальном этапе)) куда нибудь воткнуться. Обучаем)
...
Рейтинг: 0 / 0
цепочка методов
    #39902002
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Сергей Лалов
PetroNotC Sharp,

Я сам себе по Java ставлю задачи) Поздно уже дергаться на программиста
понятно. Возврат this это Г. решение.
Удачи!


Ну а какой ты бы вариант предложил? мы же как решаем проблемы - сначала кувалдой шурупы забиваем, а потом видим что есть отвертка) И от этого не уйти. Ни в какой сфере)
...
Рейтинг: 0 / 0
цепочка методов
    #39902005
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Обучаем
Stream изучил?
...
Рейтинг: 0 / 0
цепочка методов
    #39902032
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
PetroNotC Sharp
пропущено...
понятно. Возврат this это Г. решение.
Удачи!


Ну а какой ты бы вариант предложил? мы же как решаем проблемы - сначала кувалдой шурупы забиваем, а потом видим что есть отвертка) И от этого не уйти. Ни в какой сфере)

Возврат this - это частный случай возврата некого объекта.
Отсюда логично посмотреть в сторону того, чтобы разложить логику по классам.

Типа за сборку машин отвечает один, а за показ другой... А мы плавно движемся в сторону SOLID :)
...
Рейтинг: 0 / 0
цепочка методов
    #39902035
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

з.ы.: у Petro ко мне личная неприязнь, так что не обращай особого внимания на набросы в сторону предложеного мной варианта :)
...
Рейтинг: 0 / 0
цепочка методов
    #39902039
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Сергей Лалов,

з.ы.: у Petro ко мне личная неприязнь, так что не обращай особого внимания на набросы в сторону предложеного мной варианта :)

В шарп сообществе детский сад, штаны на лямках))).
...
Рейтинг: 0 / 0
цепочка методов
    #39902104
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух

Возврат this - это частный случай возврата некого объекта.
Отсюда логично посмотреть в сторону того, чтобы разложить логику по классам.
Типа за сборку машин отвечает один, а за показ другой... А мы плавно движемся в сторону SOLID :)


Спасибо! Сообразил навскидку вариант выведения Cars в некий один класс, а вот реализацию методов распихать по двум другим.
(чувствую что это лишнее, но пока ничего придумать другого не могу.)
Добавить в основной класс Cars поле индикатор, к примеру типа int и в зависимости от значения данного индикатора подставлять нужный класс с необходимым методом.

По поводу отношений на форумах могу рассказать один прикол (байка или нет. не знаю, но помню история гуляла), примерно 7 лет назад в московской конторе и её филиале в Новосибирске произошел один казус.
В головном офисе в Москве один парень DBA сцепился со своим коллегой из Новосиба, причем на почве (!) аниме )) Одному было на тот момент в районе 42 годиков, другому на пару лет побольше. Оба сидели на одном профильном форуме , в какой то момент закусились не по детски там. Ну закусились и закусились, бывает,видимо даже по теме аниме)) Но экшн начался потом , когда в столицу с регионов подтянули сотрудников на новогодний корпоратив , и один из товарищей ,указанных чуть выше , разговорился со своим коллегой и так как оба в теме, осознание своего оппонента дошло до обоих достаточно быстро. Видимо уже разогретые ,слово за слово,шутка за шуткой и они технично наваляли друг другу по щам на виду у всей публики. Первый потом сдернул скатерть с новогоднего стола и зачем то стал скручивать в нее второго)). На удивление никого не уволили, владелец конторы сказал что они достаточно повеселили публику и сделали тот вечер.)) И парню из Новосиба накинули даже по з/п
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / цепочка методов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]