Доменный Управляемый новичок Дизайна, объясните 'объекты значения' и 'сервисы' кратко

Технически, это правильно - только 'eval' не разветвляется на другую оболочку. Однако с точки зрения приложения, которое вы пытаетесь запустить в измененной среде, разница равна нулю: дочерний объект наследует среду своего родителя, поэтому (измененная) среда передается всем нисходящим процессам.

Ipso facto, измененная переменная окружения «прилипает» - до тех пор, пока вы работаете под родительской программой / оболочкой.

Если абсолютно необходимо, чтобы переменная окружения оставалась после выхода из родительского объекта (Perl или shell), необходимо, чтобы родительская оболочка выполнила тяжелую работу. Один из методов, которые я видел в документации, заключается в том, что текущий скрипт порождает исполняемый файл с необходимым языком «экспорта», а затем обманывает родительскую оболочку при его выполнении - всегда осознавая тот факт, что вам нужно предисловие введите команду 'source', если вы пытаетесь оставить энергонезависимую версию модифицированной среды. Клюге в лучшем случае.

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

Короче говоря, нет хороших (и простых) методов. Предположительно, это было затруднено, чтобы гарантировать, что безопасность системы не была безвозвратно скомпрометирована.

6
задан Pesto 2 July 2009 в 18:35
поделиться

3 ответа

Объекты значений : типичный пример - адрес. Равенство основано на ценностях объекта, отсюда и в названии, а не на идентичности. Это означает, что, например, 2 объекта Person имеют одинаковый адрес, если значения их объектов Address равны, даже если объекты Address представляют собой 2 совершенно разных объекта в памяти или имеют другой первичный ключ в базе данных.

Services ]: предлагать действия, которые не обязательно принадлежат определенному объекту домена, но действуют на объекты домена. В качестве примера я имею в виду службу, которая отправляет уведомления по электронной почте в интернет-магазине, когда цена продукта падает ниже определенной цены.

У InfoQ есть бесплатная книга по DDD (резюме книги Эрика Эвана ): http: //www.infoq. com / minibooks / domain-driven-design-quick

3
ответ дан 9 December 2019 в 20:47
поделиться

Это отличный пример того, как отличать объекты-значения от сущностей. В другом моем сообщении также приводится другой пример.

2
ответ дан 9 December 2019 в 20:47
поделиться

Типичным примером объекта ценности являются деньги. Вполне возможно, что если вы создадите приложение для международной электронной коммерции, вы захотите заключить понятие «деньги» в класс. Это позволит вам выполнять операции с денежными значениями - не только базовое сложение, вычитание и т. Д., Но, возможно, также конвертировать валюту между долларами США и, скажем, евро.

Такой объект Money не имеет внутренней идентичности - он содержит значения вы кладете в него, и когда вы избавляетесь от него, он исчезает. Кроме того, два объекта Money, содержащие 10 долларов США, считаются идентичными, даже если они являются отдельными экземплярами объектов.

Другими примерами объектов значений являются такие измерения, как длина, которые могут содержать значение и единицу измерения, например 9,87 км или 3 фута. Опять же, помимо простого хранения данных, такой тип, вероятно, будет предлагать методы преобразования в другие измерения и т. д.

С другой стороны, службы - это типы, которые выполняют важную операцию Домена, но не очень хорошо вписываются в другую, более «существительную» - основанные на концепции Домена. Вам следует стремиться иметь как можно меньше Сервисов, но иногда Сервис - лучший способ инкапсулировать важную Концепцию Домена.

Вы можете узнать больше об объектах-значениях, Сервисах и многом другом в прекрасной книге Домен -Driven Design , который я могу только рекомендовать.

7
ответ дан 9 December 2019 в 20:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: