golang builder pattern

Пользователь

от anastacio.hane , в категории: Общие вопросы , 4 года назад

Ребят, я в институте на технологиях программирования изучаю Golang. И у нас сейчас тема – builder паттерна. Только я что-то так и не смог нормально её понять. Можете объяснить более простым языком?


Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

5 ответов

Пользователь

от marcelle , 4 года назад

На хабре ещё в две тысячи десятом году на заре выхода этого языка вышла статья по использованию паттернов, при чём в статье рассматриваются три альтернативных подхода к упрощению использования класса, с конструктором со многими параметрами.


Пользователь

от reymundo_schulist , 4 года назад

Паттерн Builder (Строитель) отделяет конструкцию сложного объекта от его представления, так что один и тот же процесс строительства может создать разные представления.

Обычно в Go для достижения того же эффекта используется struct конфигурации, но передача struct в builder метод заполонит код шаблонными проверками if cfg.Field != nil {...}


Пользователь

от reymundo_schulist , 4 года назад

Вот реализация всего этого дела:

package car

type Speed float64

const (

   MPH Speed = 1

   KPH      = 1.60934

)

type Color string

const (

   BlueColor Color = "blue"

   GreenColor      = "green"

   RedColor        = "red"

)

type Wheels string

const (

   SportsWheels Wheels = "sports"

   SteelWheels        = "steel"

)

type Builder interface {

   Color(Color) Builder

   Wheels(Wheels) Builder

   TopSpeed(Speed) Builder

   Build() Interface

}

type Interface interface {

   Drive() error

   Stop() error

}


Пользователь

от genoveva , 4 года назад

На stack overflow буквально год назад был создан топик по твоей теме - How to use builder pattern to construct a struct which dynamically implements interfaces. Так что можешь зайти, глянуть, если, конечно, умеешь в английский.


Пользователь

от anastacio.hane , 4 года назад

Спасибо большое, ребят, вроде уже стало намного понятнее. Сейчас ещё посижу почитаю то, что вы мне накидали. Надеюсь, смогу разобраться и написать лабу по этой теме. Пожелайте мне удачи.