painofoop | Unsorted

Telegram-канал painofoop - painofoop

-

По-русски про объектно-ориентированное программирование по версии "Elegant Objects" English-speaking chat is here: @elegantobjects Don't forget to subscribe to @yegor256news

Subscribe to a channel

painofoop

Captcha solved, user verified.
Welcome to the group, @NikitaZinoviev

Читать полностью…

painofoop

Как проектировать в стиле е.о, с чего начинается разработка с определения сущностей, сценарии использования? Где почитать можно

Читать полностью…

painofoop

Композиция, когда тебе внутри объекта нужен другой объект для его работы. Например у тебя будет File и у него метод для чтения по байтам и FileContent который будет иметь метод, который просто возвращает содержимое файла в виде строки, и вот он будет содержать File передаваемый ему через конструктор. А декоратор это когда тебе нужно как-то поменять поведение объекта: например будет еще ReversedFileContent который будет декарировать FileContent и возвращать перевернутую строку. И делать это нужно через интерфейс если язык с типами. Например интерфейс Text у которого будет asString и FileContent, и ReversedFileContent будут реализовывать этот интерфейс (но тогда лучше переименовать ReversedFileContent в ReversedText)

Читать полностью…

painofoop

Это когда объекты и имеют одинаковый интерфейс. Т.е разделить один и тот же объект например File на FileEtc с одинаковыми методами?

Читать полностью…

painofoop

Всем привет!
Вопрос по elegant objects.

В каких случаях применяется декоратор, и в каких композиция?

Читать полностью…

painofoop

Но покрыть все синглтонами это экономия на спичках. разве нет?

Читать полностью…

painofoop

Ну тогда надо решать, что тебе важнее. Красивые ЕО и на каждый реквест ты явно через new создаёшь объект сервиса, или важнее парадигма спринга и экономия времени/памяти и тогда можно параметризовать метод process(data, step)

Читать полностью…

painofoop

Или у тебя проблема, что параметр step меняется в каждом инстансе?

Читать полностью…

painofoop

А если это не синглтон? ТО создаю новый слой получается? И туда руками кидаю Formatter и step?

Читать полностью…

painofoop

Сколько раз ты хочешь создать FooService? Если это синглтон и бин спринга то вот такой вариант через конфигурации, без Autowired в конструкторах:

@Configuration
public class FooConfig {

@Bean
FooFormatter fooFormatter() {
return new FooFormatter();
}

@Bean
FooService fooService(FooFormatter fooFormatter) {
return new FooService(fooFormatter, step);
}
}

Читать полностью…

painofoop

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

Читать полностью…

painofoop

Ладно. Странно. Но ладно. Как ты проперти прокидываешь в таком случае?

Читать полностью…

painofoop

Есть другие варианты не делать так в спринге? Я поэтому и задал вопрос)

Читать полностью…

painofoop

я понял, что я немного спутал) наверное всё такие перегрузка методов должна обыгрываться объектами через композицию. Т.к. перегрузка это по факту нарушение интерфейса. Если метод ждёт один параметр то это контракт.

Читать полностью…

painofoop

Про спринг вопрос открыт, Я отказываюсь принимать что все тут за ООП задвигают и вместо конструкторов спокойно через методы прокидывают пропертя...

Читать полностью…

painofoop

Итеративно, начиная с результата

Читать полностью…

painofoop

Насколько декомпозировать обьект File, разделить по методам? Т.е File с методом чтения по байтам, File возвращающий содержимое в виде строки, File с методом etc... ?

Читать полностью…

painofoop

Это зависит от решаемых задач...

Читать полностью…

painofoop

Декоратор - частный случай композиции

Читать полностью…

painofoop

вообще как процедурщина выглядит

Читать полностью…

painofoop

Просто отказаться от DI спринга сложно. Выходит для этого надо сделать подслои для сервисов/репозиториев и тд

Читать полностью…

painofoop

меняется в каждом реквесте

Читать полностью…

painofoop

Если не синглтон, то надо смотреть. Либо да, новый слой, какая нибудь фабрика (куда же джава без фабрик)), либо можно scope в конфигурации бина проставлять. Тогда ничего не меняется, бин создаётся спрингом в конфигах

Читать полностью…

painofoop

То есть ты сам создаешь бины, а не используешь магию спринга

Читать полностью…

painofoop

public class FooService {
private FooFormatter fooFormatter;
@Autowired
public FooService(FooFormatter fooFormatter) {
this.fooFormatter = fooFormatter;
}
}
Как добавить в конструктор этого класса еще какой то параметр, например "int step"?

Читать полностью…

painofoop

Свойство объекта нужно указывать при его создании

Читать полностью…

painofoop

Одно дело передать свойство объекта, другое дело передать кусок данных, которые этот объект может "переварить" или "обработать", при этом не меняя своего внутреннего состояния

Читать полностью…

painofoop

А тут ты что делаешь? Ты сам посоветовал передвать данные в process, всмысле мало кто делает?

Читать полностью…

painofoop

> через методы прокидывают пропертя

Думаю мало кто тут так делает

> Я отказываюсь принимать

Понял

Читать полностью…

painofoop

Может я не правильно понял, но полагаю имелось ввиду конкретно в интерфейсах перегрузки не указывать.

Читать полностью…
Subscribe to a channel