Библиотека knigago >> Компьютеры и Интернет >> Учебники и самоучители по компьютеру >> Ruby. Объектно-ориентированное проектирование


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 866, книга: Невеста Аллаха
автор: Сергей Павлович Бакшеев

"Невеста Аллаха" - это захватывающий и своевременный боевик, погружающий читателя в опасный мир международного терроризма. Автор Сергей Бакшеев мастерски сочетает напряженный сюжет, хорошо проработанных персонажей и глубокий анализ социальных и политических проблем. История следует за Катей, молодой журналисткой, которая похищена террористической группой в Сирии. Ее похитители хотят обменять ее на своего лидера, который находится в тюрьме. Вместе с двумя бывшими военными Катя...

Сенди Мэтз - Ruby. Объектно-ориентированное проектирование

Ruby. Объектно-ориентированное проектирование
Книга - Ruby. Объектно-ориентированное проектирование.  Сенди Мэтз  - прочитать полностью в библиотеке КнигаГо
Название:
Ruby. Объектно-ориентированное проектирование
Сенди Мэтз

Жанр:

Учебники и самоучители по компьютеру, Ruby

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Ruby. Объектно-ориентированное проектирование"


Читаем онлайн "Ruby. Объектно-ориентированное проектирование". [Страница - 73]

этой
структуры и можете ее запрограммировать в новом объекте, создающем Partsобъекты.

Создание модуля
PartsFactory
Как уже упоминалось в главе 3, объект, создающий другие объекты, называется
фабрикой. Возможно, в силу вашего опыта работы с другими языками программирования это слово вызывает у вас настороженность, но данный случай
поможет восстановить его репутацию. Слово «фабрика» (factory) не служит
признаком чего-то труднопонимаемого, или искусственного, или слишком
сложного, это слово разработчики объектно-ориентированных приложений
употребляют для краткого обозначения сути объекта, создающего другие объекты. В Ruby фабрики не отличаются особой сложностью и нет смысла избегать
их применения. В приводимом ниже примере кода показывается новый модуль
PartsFactory. В его задачу входят получение массива, подобного ранее упомянутому, и изготовление Parts-объекта. Попутно он также может создавать Partобъекты, но это действие является закрытым. Его открытая обязанность — создание Parts-объекта.
Первая версия PartsFactory получает три аргумента: config, а также имена
классов, используемых для Part-объектов и Parts-объектов. В строке 6 создается новый экземпляр Parts-объекта, инициализируемый массивом, состоящим

Tlgm: @it_boooks

     227
Изготовление Parts-объектов

из Part-объектов и создаваемым на основе информации, которая находится
в аргументе config.
1 module PartsFactory
2
def self.build(config,
3
part_class = Part,
4
parts_class = Parts)
5
6
parts_class.new(
7
config.collect {|part_config|
8
part_class.new(
9
name:
part_config[0],
10
description: part_config[1],
11
needs_spare: part_config.fetch(2, true))})
12
end
13 end

Структура массива config этой фабрике известна. В строках 9–11 фабрика
ожидает, что name будет в первом столбце, description — во втором, а needs_
spare — в третьем.
Присутствие в фабрике знаний о структуре config влечет за собой два последствия. Во-первых, config может быть выражен очень сжато. Поскольку
PartsFactory понятна внутренняя структура config, этот аргумент может быть
указан в виде массива, а не хеша. Во-вторых, согласившись с тем, что config
будет массивом, придется всегда создавать новые Parts-объекты только с использованием фабрики. Создание нового Parts-объекта с помощью иного механизма потребует продублировать те знания, которые запрограммированы
в строках 9–11.
Теперь при наличии PartsFactory вы можете воспользоваться определенными выше конфигурационными массивами для того, чтобы без особого труда
создать новый Parts-объект.
1
2
3
4
5
6
7
8

road_parts = PartsFactory.build(road_config)
# -> [#,
#
# [#,
#
# --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.