Сенди Мэтз - 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)
# -> [#,
#
# [#,
#
# --">
структуры и можете ее запрограммировать в новом объекте, создающем 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)
# -> [#,
#
# [#,
#
# --">
Книги схожие с «Ruby. Объектно-ориентированное проектирование» по жанру, серии, автору или названию:
Карл Таунсенд, Деннис Фохт - Проектирование и программная реализация экспертных систем на персональных ЭВМ Жанр: Искусственный интеллект Год издания: 1990 |
Е. А. Роганов, Н. А. Роганова - Язык программирования Ruby Жанр: Учебники и самоучители по компьютеру Год издания: 2020 |
Генри Лю Эдельсон - Ruby на платформе Java Жанр: Учебники и самоучители по компьютеру Год издания: 2011 |