Considere este exemplo:
Eu tenho um site. Ele permite que os usuários façam postagens (podem ser qualquer coisa) e adicionem tags que descrevam a postagem. No código, tenho duas classes que representam a postagem e as tags. Vamos chamar essas classes Post
e Tag
.
Post
cuida da criação de postagens, exclusão de postagens, atualização de postagens etc.
Tag
cuida da criação de tags, exclusão de tags, atualização de tags etc.
Há uma operação que está faltando. A vinculação de tags a postagens. Estou lutando com quem deve fazer esta operação. Poderia se encaixar igualmente bem em qualquer classe.
Por um lado, a Post
classe pode ter uma função que aceita a Tag
como parâmetro e, em seguida, armazena-a em uma lista de tags. Por outro lado, a Tag
classe pode ter uma função que usa a Post
como parâmetro e vincula o Tag
a Post
.
O acima é apenas um exemplo do meu problema. Na verdade, estou enfrentando isso com várias classes semelhantes. Poderia se encaixar igualmente bem em ambos. Além de realmente colocar a funcionalidade nas duas classes, quais convenções ou estilos de design existem para me ajudar a resolver esse problema. Estou assumindo que deve haver algo menos do que escolher um?
Talvez colocá-lo nas duas classes seja a resposta correta?