Question

... et la meilleure façon de gérer les commentaires des succès / échec à la couche de vue.

Les options sont:

doBusinessLogic(things)

ou

for (Thing thing : things) {
  doBusinessLogic(thing)
}

En supposant que nous voulons une couche de vue qui reçoit des commentaires succès / erreur de manière cohérente (à savoir des opérations simples ou multiples sur des objets de valeur), quelle est la meilleure approche?

Précision:

Gérer plusieurs types d'exceptions lancées depuis un appel de logique métier dans la couche de vue est le code lourd et pose également des problèmes de maintenance (nouvelles exceptions sont introduites que la couche de présentation ne sait pas). Il semble préférable pour l'appel logique métier pour gérer les erreurs sur les objets de valeur multiples et les « paquet » pour la vue de traiter de manière cohérente.

Était-ce utile?

La solution

Que diriez-vous quelque chose le long des lignes de votre dernière suggestion:

for (businessObject : businessObjects) { businessObject.doBusinessLogic() }

L'idée est de mettre la logique métier dans une méthode de l'objet métier. Votre couche de vue boucle peut sur tous les objets métier, dire chacun pour faire leurs affaires. Comment chacun fait ses affaires est dans la logique de l'objet métier dans la couche d'affaires. Vous pouvez gérer les erreurs et les valeurs telles par le retour de la méthode doBusinessLogic ou en lançant des exceptions pour les occurrences désagréables.

Si vous faites la logique objet transverse (par exemple, la logique qui fonctionne sur plus d'un seul objet métier), vous pourriez peut-être construire une classe businessObjectManager qui pourrait avoir des méthodes qui prennent un ou plusieurs objets métier et fonctionne sur leur. Ainsi, en mettant l'objet de gestionnaire dans la couche d'affaires, vous gardez toujours tous votre logique métier dans la couche d'affaires.

Autres conseils

En fin de compte, je suis allé pour la première option et a créé une classe générique léger « bundle résultat » qui encapsule les réussites et les échecs d'une action sur une collection d'objets. est claveté à l'identificateur d'objet correspondant un succès ou un échec.

A l'intérieur de chaque bundlesis rempli appel logique métier et est revenu à la couche de vue. Exceptions lancées dans la boucle de logique d'entreprise « effectuer une action sur l'objet » sont pris et un échec correspondant ajoutés au faisceau de résultat (claveté sur l'ID d'objet).

La couche d'affichage a une méthode simple auxiliaire qui présente le retour d'information contenue dans le faisceau de résultat à l'utilisateur.

Cela fonctionne très bien.

Je pense que l'approche que vous prenez c'est ce qui convient le mieux à votre système.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top