Разработка Go: Golang обучение с нуля | Паттерны проектирования | Фабричный метод | Golang patterns HD
00:19:28
Обнаружено блокирование рекламы на сайте
Для существования нашего сайта необходим показ рекламы. Просим отнестись с пониманием и добавить сайт в список исключений вашей программы для блокировки рекламы (AdBlock и другие).
12n.ru 18207 роликов
599 просмотров на сайте 12n.ru
Golang обучение с нуля | Паттерны проектирования | Фабричный метод | Golang patterns .
Паттерны проектирования.
Фабричный метод — это порождающий паттерн проектирования, который позволяет определяет общий интерфейс поведения объектов который позволяя подтипам реализовывать свою логику работы.
Для чего нужны паттерны проектирования и как с ними работать.
— Студия разработки Intellij idea
— Операционная система Linux
#golang #обучение #паттерны
Фабричный метод — это порождающий паттерн проектирования, который позволяет определяет общий интерфейс поведения объектов который позволяя подтипам реализовывать свою логику работы.
Для чего нужны паттерны проектирования и как с ними работать.
— Студия разработки Intellij idea
— Операционная система Linux
#golang #обучение #паттерны
развернуть свернуть
Вы так же можете принять участие в развитии этого проекта.
Отблагодарить просто — (Там же можно сообщение написать)
Разница в том, что фабричный метод принадлежит классу, инстанс которого создается фабрикой. Фабрика часть своих задач переносит на плечи самого класса. Метод в классе(конструктор), который позволяет взять на себя часть задач фабрики по созданию объекта будет фабричным методом.
1. Для перечисления типов необходимо создать новый тип
type NameType string и для него определить конкретные имена ServerType NameType = «server» и т.д.
При таком подходе мы можем например поменять тип NameType и сделать его int-ом. Реализовать для него метод String() и List(). А так же отдельным методом добавить проверку, что переданное значение является валидным. IsValid(t NameType) bool {}
2. Вторая грубейшая ошибка — держать все поля классов открытыми. Обзовите все поля с маленькой буквы и инициализируйте их конструктором. Если речь, конечно же, не идет о сериализации класса в какой-нибудь JSON объект. Но и в этом случае лучше определить отдельный тип данных.
3. Третья ошибка, не очевидная в этом примере, когда каждый класс который инициализируется фабрикой будет помещен в отдельный пакет(а это необходимо делать почти всегда) вы получите циклические зависимости. так как классы будут ссылаться на интерфейс определенный в pkg. А фабрика будет ссылаться на отдельные классы в пакетах. Решение — фабрика не должна находиться в пакете pkg. либо интерфейсы должны быть вынесены в отдельный пакет.