Abstraction Obsession também é um antipattern, mas pouco popular, o que não o toirno menos válido. O que usar é algo que depende de contexto e muita experiência, mas o maior antipattern é usar tudo como receita de bolo.
O assunto foi tratado esses dias sob outro prisma: https://www.tabnews.com.br/maniero/741ea32b-e5f0-4bfa-8e01-93b1733a89d0.
Primeiro deveria pensar se deve usar UUID ou algo parecido, isso começou virar um padrão as pessoas adotarem sem pensar se é útil e se vale o preço que tem que pagar com ele.
Este caso pode ser interessante a abstração para evitar ter que vincular o id
com a implementação de UUID, mas poucas pessoas conseguem fazer uma boa abstração para esse id
e que se mudar a implementação internet que passe usar um UUID ou deixe de usar e tudo continue funcionando. Nesse ponto eu sou um pouco crítico das abstrações (que podem ser ótimas) porque é muito difícil não ter vazamento de abstração.
Vou me abster de falar sobre DDD, talvez hoje a técnica mais interessante e útil que é mais mal-usada e adotada onde não deve porque a modinha é mais importante. Inclusive uma das coisas que o DDD induz é fazer tudo como se o futuro do sistema pudesse ser tão controlado e os recursos usados não importam.
Obrigado pelo link, olhando por cima não sei se é uma boa implementação, mas no mínimo pode ser útil para fazer algo melhor, se não for, com um bom começo.
S2
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).