@oop_ru

Страница 296 из 785
Артур Евгеньевич
20.07.2017
20:58:31
парни можете объяснить вот это утверждение

"Обилие же композиции говорит о нарушении Принципа Инверсии Зависимостей, сформулированном Бобом Мартином, которую сейчас можно выразить в терминах агрегации и композиции: предпочитайте агрегацию вместо композиции, поскольку первая стимулирует использование абстракций, а не конкретных классов."

Evgeniy
20.07.2017
20:59:11
ну в целом да

разницу между агрегацией и композицией знаешь?)

Google
Артур Евгеньевич
20.07.2017
20:59:40
да знаю

Evgeniy
20.07.2017
20:59:54
плюс агрегации что объект приходит извне

и соответственно может быть подменен если у тебя там solid

и принцип лисков

соблюдается

получается используя агрегацию код более присболен к внедрению зависимостей

и соответственно инверсии зависимостей

Артур Евгеньевич
20.07.2017
21:01:12
хм ну да выходит так

Evgeniy
20.07.2017
21:02:08
ну ты про фабрику правильно написал

вон в ларавел вместо фабрик фасады

а внутри фасадов di

просто лазить по приложению и править фабрики это то еще занятие

и на лету их сложно менять

Google
Артур Евгеньевич
20.07.2017
21:03:08
ну да вот я поэтому и удалил сообщений)

da horsie
20.07.2017
21:08:44
конфигурация DI распухает, ее становится сложно поддерживать

совсем упарываться DI тоже не стоит

Артур Евгеньевич
20.07.2017
21:09:31
мне нужно было создать контроллер который имеет один роут который возвращает значения справочника. Так я его зареги как сервис, и еще создал сервис фабрику репозиториев с определенным параметром, которая дает ему репозиторий нужной сущности??

такие правила)

da horsie
20.07.2017
21:09:50
ну вот да

это уже наркомания какая-то

Артур Евгеньевич
20.07.2017
21:10:38
а вообще что вы понимаете под словом сервис? имею ввид не приложение а именно сервис как класс

Evgeniy
20.07.2017
21:10:52
state less

imutable

Артур Евгеньевич
20.07.2017
21:11:38
то есть по сути то что можно заменить статическим классом?)

Evgeniy
20.07.2017
21:11:56
ну надо пихать зависимости туда будет

например А использует сервис С

С зависит от Б

если ты заменишь С на статический класс

то А будет зависеть от Б

если тебя такое устрайвает то заменяй)

Артур Евгеньевич
20.07.2017
21:12:55
С зависит от Б
вот важный момент, помоему сейчас слово сервис эквивалентно слову зависимость

Google
Evgeniy
20.07.2017
21:13:10
ну весь код это один комок зависимостей

и параметры к базе данных это тоже зависимости

Артур Евгеньевич
20.07.2017
21:13:22
по сути сервис - набор функций, который можно заинджектить

Evgeniy
20.07.2017
21:13:59
если говорить фпшным языком то это частичное карирование функций

есть чистая функция

есть на основе неё частично карированные функции

но это фп

и тут я не силен

как и в ооп

я силен в КОП (Костыльно ориентированном программирование)

da horsie
20.07.2017
21:15:06
частично каррированная - это как?) половина переменной передана? )

полтора землекопа?

Evgeniy
20.07.2017
21:16:12
add(a, b) { return a + b; } addFive(a) {return add(5, a);}

грубо говоря вот это карирование, но в фп есть свои штуки

da horsie
20.07.2017
21:16:28
это каррирование

Evgeniy
20.07.2017
21:16:28
синтаксис и тд

частичное

da horsie
20.07.2017
21:16:42
что значит частичное?

Evgeniy
20.07.2017
21:16:50
в книге вычитал

частичное применение вроде

Google
da horsie
20.07.2017
21:17:27
может ты путаешь с partial application?

вот да

Evgeniy
20.07.2017
21:18:21
я в голове понимаю как это а все эти термины не запоминаю)

Admin
ERROR: S client not available

Ivan
21.07.2017
09:12:37
Есть интерфейс SshClient с одним методом выполнения удалённой команды execute($cmd) и дефолтная реализация DefaultSshClient с опциями подулючения в конструкторе. Для логгирования выполняемых команд сделал декоратор LoggingSshClient. Есть проблемы с DNS resolution при запросах, добавил ещё один декоратор DnsFailureSafeSshClient. Теперь понадобилось конфигурировать для всех SshClient путь к бинарнику ssh в одном месте, сделал DefaultSshClientFactory с путём в конструкторе. Вот теперь для остальных SshClient мне тоже фабрики делать?

много классов получается, может как-то попроще можно?

Ivan
21.07.2017
09:21:13
я хочу переиспользовать его, но с разными опциями соединения, которые берутся из бд, не из конфига

сейчас $factory->createClient($options)->execute($command);

в разных местах мне нужно логгировать запросы

или проблема с днсами тоже не везде

то есть $factory в разных местах разная

а вот конфигурирование где какая фабрика идёт через DIC

то есть в разных местах мне нужно указать, какой набор декораторов использовать

не знаю, правильно ли так, но сделал декорацию фабрик

https://gist.github.com/Romashka/a758a85462e29d0a0d372f43ceef9df2

.avolver
21.07.2017
19:58:22
https://www.amazon.com/Elegant-Objects-1-Yegor-Bugayenko/dp/1519166915

Google
Evgeniy
21.07.2017
20:01:33
Logging implements ExecutorInterface ну и FallbackChain implements DnsResolverInterface

нет окончаний на or и er

эксперт по костылям

http://cs4.pikabu.ru/post_img/2016/08/01/7/147004996416599702.jpg

Sergei
21.07.2017
20:04:01
https://www.amazon.com/Elegant-Objects-1-Yegor-Bugayenko/dp/1519166915
На самом деле я об этом прочитал в другом блоге, но ссылка на него была в блоге Егора в одной из его статей.

Logging implements ExecutorInterface ну и FallbackChain implements DnsResolverInterface
Ну не буквально, здесь всё равно есть окончания кроме FallbackChain

da horsie
21.07.2017
20:05:46
есть еще хороший принцип включать голову, когда следуешь принципам

Evgeniy
21.07.2017
20:06:10
а еще лучше не выключать голову))

хотя мб только в армии стоит выключить, а в остальных случаях держать включенной

da horsie
21.07.2017
20:07:35
На самом деле я об этом прочитал в другом блоге, но ссылка на него была в блоге Егора в одной из его статей.
вот этим чувакам расскажи, они походу не в курсе https://github.com/unclebob/fitnesse/tree/master/src/fit

Sergei
21.07.2017
20:12:46
вот этим чувакам расскажи, они походу не в курсе https://github.com/unclebob/fitnesse/tree/master/src/fit
or er это признак того что обьект не сущность, а часть поведения которая должна быть в каком то другом обьекте. Конечно есть и исключения.

DnsResolverInterface к примеру это часть поведения которая должна быть в классе Dns

Страница 296 из 785