powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / цепочка методов
25 сообщений из 31, страница 1 из 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
25 сообщений из 31, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / цепочка методов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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