
Sergey
07.01.2018
15:06:06
ссылка выше адресом
ты о том что я тебе сказал убрать кучу ифов и заменить на метод supports явно разделив кто решает какая стратегия должна выполняться?

Konstantin
07.01.2018
15:06:18
угу
у меня не стыковка в башке
тогда получается эти ифы лезут в сами стратегии

Google

Konstantin
07.01.2018
15:07:31
и у меня чет это не вяжется в голове это

Sergey
07.01.2018
15:07:46
> Класс навигатора будет иметь метод установки новой стратегии, что позволит на лету изменять стратегию поиска пути.
в твоем случае за выбор стратегии отвечал сам этот "навигатор"
а в примере по ссылке стратегия назначалась на уровень выше
supports действует анлогично, позволяя навигатору не знать как именно происходит выбор стратегии но оставляя возможность подмены в рантайме

Konstantin
07.01.2018
15:09:14
нифига не понял, но спасибо ))
т.е. по сути навигатор - это мой яблочный спас

Sergey
07.01.2018
15:10:48

Konstantin
07.01.2018
15:11:06
и туды суппортс

Sergey
07.01.2018
15:11:17

Konstantin
07.01.2018
15:11:31
а
и туда же условия

Google

Konstantin
07.01.2018
15:11:44
и иначе фолс отдавать

Sergey
07.01.2018
15:11:51
ну то есть логика такая:
для всех стратегий:
если стратегия это могет
вызвать стратегию

Konstantin
07.01.2018
15:11:54
а в спасе форычем обходить уже
которая тру
ту и берем

Sergey
07.01.2018
15:12:08
но я не разбирался нафига тебе там стратегии)

Konstantin
07.01.2018
15:12:27
ну типа яблоки там отдаются только четные или только нечетные
и есть 3 варианта

Sergey
07.01.2018
15:12:33
есть мнение что можно было бы сделать элегантнее но мне было лень читать требования

Konstantin
07.01.2018
15:12:36
у юзера нет яблок - отдать любое
у юзера есть четное яблоко - отдать следующее четное
у юзера нечетное яблоко - отдать следующее нечетное

Sergey
07.01.2018
15:13:14
мне все еще лень читать)

Konstantin
07.01.2018
15:13:19
как элегантнее - я хз, пока не придумал
ёпт, 3 строчки лень читать ? Вот это уровень ))
а если серьезно, то что бы ты тут выбрал ?

Maksim
07.01.2018
15:16:24
оставить как есть и не убивать N часов на мифическую проблему))

Konstantin
07.01.2018
15:16:53
это проблема на 150килорублей
думаю можно и убить n часов

Maksim
07.01.2018
15:17:21
врядли 150килорублей стоят именно эти 3 ифа)

Google

Konstantin
07.01.2018
15:18:56
в принципе это все задание
там еще пара мелких условий
но они не принципиальны

Sergey
07.01.2018
15:20:27
> таким образом юзеры делятся на 3 типа: 1 тип - яблок нет - берем любое. 2 тип яблоки четные - берем только четные, если есть. 3 тип берем ток нечетные, если есть
кто знает какие у юзера яблоки? четные или нечетные? Как ты определяешь это?

Konstantin
07.01.2018
15:21:14
бд знает

Sergey
07.01.2018
15:21:24
бд ничего не знает, она все хранит

Konstantin
07.01.2018
15:21:28
у яблока айдишник юзера есть
который взял
крч яблоко знает

Sergey
07.01.2018
15:21:46
то есть яблоко знает кто его взял и какое оно - четное или нечетное

Konstantin
07.01.2018
15:22:09
угу

Sergey
07.01.2018
15:22:12
зачем яблоку знать кто его взял?

Sergey
07.01.2018
15:22:53
пользователь знает какие яблоки он взял. И соответсвенно если у него есть оные то они либо все четные либо все нечетные, так?

Konstantin
07.01.2018
15:23:01
ну
а, ну да
я по юзеру и смотрю
туплю прост

Sergey
07.01.2018
15:24:39
user.takeApple(apples)
и внутри что-то типа
apples.likeThis(this.apples.last())

Konstantin
07.01.2018
15:25:38
ну это условие
а лайк типа говорит, какое яблоко отдать ?

Google

Sergey
07.01.2018
15:27:12
ну типа ты даешь сэмпловое яблоко коллекции и та уже разруливает какие тебе давать)
либо надо у поставщика трекать какие яблоки ты выдавал ранее

Konstantin
07.01.2018
15:27:42
нуу хз, хз
а мой вариант тебе чем не нравится ?

Sergey
07.01.2018
15:28:06
я не вижу тут стратегий
задачу тебе дали какую - стратегии туда запихнуть или просто задачу?

Konstantin
07.01.2018
15:28:40
if($this->user->apples->count() && $this->user->apples->first()->id % 2 == 0){
return Apple::Even()->get();
}

Sergey
07.01.2018
15:28:57
и я тебе потому и говорил почитать про закон деметры

Konstantin
07.01.2018
15:29:03
не, просто задачу. Я прикинул - вроде сойдет
я прочитал

Admin
ERROR: S client not available

Sergey
07.01.2018
15:29:32
> $this->user->apples->count()
прощей инкапсуляция, сокрытие информации, здравствуй высокая связанность

Konstantin
07.01.2018
15:29:41
там про слабую связанность
я прост с трудом вкуриваю, как здесь сделать слабую связанность
а ты ща говоришь на непонятном для меня языке ))

Sergey
07.01.2018
15:31:09
1. кто выдает яблоки?
2. что этот кто-то должен знать о том где пользователь яблоки хранит? может быть он не хочет этого знать

Konstantin
07.01.2018
15:31:36
корзина выдает яблоки
корзине похер как юзер яблоки хранит
главное, чтобы он нужное получил

Sergey
07.01.2018
15:32:03
> user->apples->count()
ну вот не похер же)

Google

Sergey
07.01.2018
15:32:11
оно знает как оно их хранит

Konstantin
07.01.2018
15:32:19
ну дык это юзер

Sergey
07.01.2018
15:32:49
> $this->user->apples->count()
судя по $this->user это не юзер
это кто-то другой знает как хранятся яблоки

Konstantin
07.01.2018
15:33:10
это спаситель яблок )
он знает )

Sergey
07.01.2018
15:33:24
ну вот а не должен

Like
07.01.2018
15:34:46

Sergey
07.01.2018
15:34:55
есть два варианта:
- корзина получает ID юзера который просит яблоко и закрепляет за ним что этот юзер в предь будет получать только четные/нечетные
- корзина будет получать сэмпловое яблоко - типа "дай еще таких". И уже будет разруливать че как брать.
Так мы уменьшим связанность
но это не точно

Konstantin
07.01.2018
15:36:17
он нужен для того, чтобы яблоки юзеру сохранять

Like
07.01.2018
15:36:23
Ааа, сохранять

Konstantin
07.01.2018
15:37:09
я думаю так. Что юзер должен знать, какие яблоки брать
яблоко должно просто иметь айдишник
а корзине похуй че отдавать
если уж в реале
пусть юзер копошится и нужное яблоко ищет
тогда юзер имеет метод тейк эпл
берет яблоко
смотрит его и решает, захавать его совсем или нет
и тогда все логично. Юзер знает, как он хранит яблоки и какое ему нужно
остальным насрать: что яблокам, что корзине