Je suis actuellement en train de planifier la conception d'un nouveau système que je devrai coder pour interagir avec une API back-end. Je pensais à la composition et à l'héritage de l'objet et j'ai décidé que la procédure la plus correcte dans ma situation serait d'utiliser la composition plutôt que l'héritage car mes objets ont une relation «a» et non un «est un». Je trouve maintenant cependant que parce que certains objets dépendent d'autres, il peut y avoir des cas où "l'objet A" a un attribut qui est "l'objet B" et un attribut "l'objet C" - cependant "l'objet B" a aussi un attribut "objet C".OO Design Patterns avec Perl
Dans l'espoir que cette analogie serait plus logique:
Disons que j'ai une entreprise qui vend des boîtes qui contiennent des chats et des substances radioactives à l'intérieur d'entre eux qui peuvent ou ne réagiront:
Je vends mon produit aux organisations. Les utilisateurs s'inscrivent avec moi en spécifiant une organisation à laquelle ils appartiennent. Une organisation peut avoir plusieurs utilisateurs ou aucun. Un utilisateur doit avoir une organisation à laquelle il appartient. Je garde la trace de mon produit (la boîte en tant qu'entité et le (s) chat (s) en tant qu'entité) et l'organisation à laquelle ils appartiennent. Je garde aussi une trace des chats et des boîtes dans lesquelles ils se trouvent. Une organisation peut avoir beaucoup de boîtes avec beaucoup de chats dans chacune d'elles. Les boîtes peuvent être vides. Certains utilisateurs sont autorisés à acheter de nouvelles boîtes tandis que d'autres sont autorisés à les regarder.
Authentification & L'autorisation est gérée par l'API avec laquelle j'interagis.
En ce qui concerne les relations d'objet vont:
$user has a => $organization that it belongs to
$user has a => $role that dictates what it may or may not do.
$box has a => $organization that it belongs to
maintenant:
$cat has a => $box that it belongs to
ET
$cat has a => $organization that it belongs to ?
OU
$cat has a => $box that it belongs to WHICH has a => $organization that it belongs to
Quelle serait la décision de conception correcte ici? Existe-t-il d'autres aspects que je ne considère pas qui pourraient rendre une option plus viable que l'autre?
Je vais mettre en œuvre un modèle de conception MVC
dans ce système en utilisant Perl Catalyst
et Moose
.
Merci à tous d'avance pour vos contributions.
Bonjour à tous. Tout d'abord merci pour votre réponse. Ce que votre dicton a du sens - et cela me permettra de garder un modèle propre de conception cohérente à travers le système. Je vais seulement concevoir des objets pour me soucier de ce qui les affecte directement et rejeter tout ce qui se trouve plus haut dans la chaîne dont il n'a pas besoin. Je vous donnerais un vote positif, si j'avais assez de crédit de rue par ici. Une fois que j'aurai atteint l'exigence de 15 points de réputation, je reviendrai voter :) – nmap911
@ nmap911 - si la réponse a été utile, vous pouvez (et devriez :) aussi marquer comme "accepté" (checbox à sa gauche). Heureux je pourrais fournir des commentaires utiles – DVK
Excellent, merci pour les heads-up. Marqué - Aussi j'ai la crédibilité de la rue maintenant, donc avoir un vote up – nmap911