Что это значит, когда кто-то говорит, что модуль имеет как поведение, так и состояние? - PullRequest
1 голос
/ 08 декабря 2011

Как я понял, я получил обзор кода, согласно которому мой модуль имеет поведение и состояние одновременно, что это означает в любом случае?

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

Разве такая схема не может одновременно содержать данные (состояние) и логику (поведение)?

Под модулем я подразумеваю: настоящий модуль Ruby.

Я разработал что-то вроде этого: Как разработать приложение с учетом принципов SOLID и шаблонов проектирования

и реализовал команды в модуле, который я использовал для смешивания.

Ответы [ 3 ]

2 голосов
/ 08 декабря 2011

На что бы вы ни ссылались, будь то объект, определенный классом (или типом), модулем или чем-то еще с кодом в нем, состояние - это данные, которые сохранилось в течение нескольких звонков на вещь. Если он «запоминает» что-либо между одним выполнением и следующим, то он имеет состояние.

Поведение , otoh, это код, который манипулирует или обрабатывает эти данные о состоянии или данные о состоянии, которые используются только во время одного выполнения кода (например, параметр значения передаются в функцию). Методы, подпрограммы или функции, все, что изменяет или делает что-то, это поведение .

Большинство классов, типов или чего-либо другого имеют как данные (состояние), так и поведение, но ....

Некоторые классы или типы предназначены просто для переноса данных. Они называются объектами передачи данных или DTO или объектами простого старого контейнера (POCO). Они имеют только состояние и, как правило, мало или вообще не имеют поведения.

В других случаях класс или тип создаются для хранения общих функций полезности (например, Math Library). Он не будет поддерживать или сохранять какое-либо состояние между многими вызовами, которые он вызывает для выполнения одной из своих утилит. В нем используются только данные, передаваемые в качестве параметров для каждого вызова библиотечной функции, и эти данные отбрасываются по завершении процедуры. Это имеет поведение. но нет государства.

1 голос
/ 08 декабря 2011

Вы правы, думая, что ООП объединяет идеи как поведения, так и состояния и смешивает две вещи вместе, но из формулировки вашего вопроса мне интересно, если вы написали модуль ruby ​​(mixin, что угодно Вы хотите назвать это) с состоянием, так что существует вероятность утечки состояния при многократном использовании одного и того же модуля.

Не видя рассматриваемого кода, я не могу дать вам полный ответ.

0 голосов
/ 08 декабря 2011

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

Те же самые понятия могут быть экстраполированы на модуль ruby, он имеет «состояние», если он определил данные, доступные в модуле, и имеет «поведение» в форме операцийпри условии, что оперируют данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...