В чем причина создания разных подтипов веса?
Если GrossWeight и NetWeight - это разные идеи в вашем домене, если было бы ошибкой заменять вес брутто на вес нетто, и если вы используете язык, который помечает несовместимые типы,затем установление GrossWeight и NetWeight в качестве отдельных типов позволяет вам использовать собственную программу проверки типа языка, чтобы помечать (и тем самым устранять), безусловно, классы ошибок, которые в противном случае могли бы попасть в производство.
Тот факт, что два разных вида весовв настоящее время есть эквивалентные реализации, по сути, случайность реализацииВ тех языках, которые его поддерживают, вы можете рассмотреть возможность того, чтобы эти два типа наследовали свои реализации от какого-то общего предка.
Многие модели будут обрабатывать идентификаторы , используя аналогичный шаблон - даже если на уровне реализациинет никаких отличий, может быть полезно отличить тип CustomerId
от типа OrderId
, чтобы гарантировать, что вы не повредите свой набор данных, непреднамеренно заменив один на другой.
Другое место, гдевы увидите, что этот подход используется в моделях, которые отличают ненадежные входные данные от надежных данных.Конечно, базовое примитивное представление «просто байты», но оно позволяет вам использовать систему типов, чтобы отличать данные, прошедшие через проверочную контрольную точку, от данных, которые не имеют.