Форум
Архитектура программного обеспечения
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, Qulac, Вы писали: Q>Здравствуйте, gandjustas, Вы писали: G>>Здравствуйте, Qulac, Вы писали: Q>>>>>Мы имеем то что имеем, хоть с ооп хоть без ооп. Я бы выбрал приведеный пример с дженериками. G>>>>Он же в итоге не полностью описывает ограничения предметной области. Q>>>Где не полностью? G>>[cs] G>>abstract class Player<TWeapon> where TWeapon : Weapon G>>{ G>> TWeapon Weapon { get; set; } G>>} G>>sealed class Wizard : Player<Staff> { } G>>sealed class Warrior : Player<Sword> { } G>>[/cs] G>>Ты про этот пример: G>>Любой метод, который принимал Player теперь не сможет принять Wizard или Warrior. G>>Это не будет масштабироваться. Если добавить требования «игрок может носить доспехи, а волшебник может носить только мантию», и «игрок может читать книги, а воин может читать только немагические книги», то все быстро развалится. G>>>>>>А в реальности ДДД мы разве не прибиваем домен к "общему языку" и фактически не можем менять произвольно модель? Q>>>>>Фраза:"Игроку дали оружие" не имеет смысла в не контекста. Кто дает? Если про игру то это возможно какой другой игровой персонаж. Тогда проблема решается перегрузкой методов или шаблоном "визитер" :) G>>>>А ты дальше второй части читал? Там есть и перегрузка и визитер. Q>>>Ну и хорошо.:) G>>Ничего хорошего в итоге не получилось. Куча кода и dynamic dispatch в рантайме, никакого контроля оишбков на уровне системы типов, то есть того, ради чего система типов и затевалась. Q>все ясно :facepalm: продолжать не имеет смысла.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …