Size: a a a

pro.rb (Ruby/Rails / RU)

2021 April 19

IK

Ivan Kokorev in pro.rb (Ruby/Rails / RU)
Чем это лучше, чем как я сделал?
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
Как я понял, для уаждой машины есть своя логика, которую можно завернуть в свой класс и она отличается
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
ну, я бы вообще подумал о другом, почему объеденить эту логику пытается человек
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
и что в ней действительно общего кроме концепции сервера
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
Поведение становится прямым и понятным, нет проблем когда что-то сломалось в каком-то методе, который был определен на ходу  и в коде его хрен найдешь
источник

IK

Ivan Kokorev in pro.rb (Ruby/Rails / RU)
Названия и параметры всех методов
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
а логика отличается?
источник

IK

Ivan Kokorev in pro.rb (Ruby/Rails / RU)
Реализация отличается
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
т.е. только из-за параметров ты хочешь объеденить разные части в одну?
источник

IK

Ivan Kokorev in pro.rb (Ruby/Rails / RU)
Что помешает в стектрейсе увидеть, где его найти?
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
(вообще, хороший кейс, спасибо. я собираю случаи при которых люди объединяют логику там где не надо, вот о параметрах не думал даже)
источник

IK

Ivan Kokorev in pro.rb (Ruby/Rails / RU)
Чтобы пользоваться экземплярами Server вообще вне зависимости от его производителя и ОС
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
а зачем тебе им пользоваться если там сплошная специфика, по твоим словам?
источник

IK

Ivan Kokorev in pro.rb (Ruby/Rails / RU)
Специфика в реализации, использование полностью одинаковое
источник

IK

Ivan Kokorev in pro.rb (Ruby/Rails / RU)
Любой сервер можно перезагрузить, любому можно поставить операционную систему и так далее
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
так почему не сделать отдельно разные сервера, а потом использовать их как хочешь, если интерфейс одинаковый?
источник

IK

Ivan Kokorev in pro.rb (Ruby/Rails / RU)
Отдельно - это как?
источник

IK

Ivan Kokorev in pro.rb (Ruby/Rails / RU)
Все комбинации из операционной системы и производителя, 9 классов в моём примере, наследующих Server?
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
ну, у тебя есть что-то в таком духе:


class Apple
 def clear
   # some logic
 end
end

class Orange
 def clear
   # some logic
 end
end

в таком случае тебе все равно какой класс использовать, так как интерфейс одинаковый. делать враппер над фруктами - лишнаяя абстракция, которая не понятно какую логику решить пытается в твоем случае, кроме упрощенного способа получения сервера, что решается обычным квери

fruit = (Apple | Orange).new
fruit.clear
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
Ну тогда это интерфейс, который реализуют по разному разные классы
источник