J'ai une classe avec peu de propriétés A, B, C. Je considère cela comme un objet d'entrée car je l'utilise dans la logique pour exécuter certaines règles basées sur les valeurs de ces propriétés. Maintenant, après avoir exécuté les règles, j'ai créé une autre classe comme une sortie avec les mêmes propriétés et avec les mêmes valeurs en plus de quelques autres propriétés spécifiques à la sortie. Maintenant, ma question est de savoir comment partager ces propriétés (A, B, C) entre les classes d'entrée et de sortie sans avoir à affecter manuellement la valeur de l'entrée à la sortie. Pouvez-vous me suggérer un design efficace que je dois utiliser? Est-ce que le concept de classe abstraite entre en scène ici? Ou y a-t-il un autre moyen efficace?Partager des propriétés entre plusieurs classes
Répondre
Utilisez une classe intermédiaire qui n'a que les propriétés, puis accédez à l'instance de cette classe à partir de vos objets d'entrée et de sortie, mais dans la plupart des cas, il serait plus simple de copier les valeurs de votre entrée.
Avez-vous envisagé d'utiliser le motif de conception singleton? Je ne suis pas familier avec la spécification de votre projet, mais il semble que cela puisse vous aider ou au moins vous guider.
Vous pouvez définir un opérateur implicite (C#) sur la classe de sortie comme ceci:
public static implicit operator OutputClass(InputClass m)
{
this.A = m.A;
this.B = m.B;
this.C = m.C;
}
Alors tout ce que vous avez à faire est:
output = input;
et vous serait effectivement apporter plus de tous les données de l'entrée que vous voulez dans la sortie.
Options - singleton - fonctionne mais dépend des scénarios de réutilisation. Utilisez-vous un type d'usine ou un modèle d'instance autre que "new MyObj()"? si c'est le cas, l'usine peut faire le travail - ce qui conduit à la méthode suivante - injection. Est-ce que votre langue prend en charge l'injection ou une sorte (aka - printemps). Vous pouvez définir une méthode setter, mais laisser le cadre d'injection et/ou les méthodes d'usine pour gérer/faire l'installation - dépend encore une fois des cas d'utilisation. Si son runtime est basé, vous devrez utiliser la fonction -delate pour faire référence aux objets d'origine ou à un objet intermédiaire (qui enveloppe à son tour A, B C etc.).
Probablement un peu à gauche du champ, mais je suppose que votre question est un cas simple juste pour obtenir quelques suggestions pour un plus gros problème.
Les propriétés sont-elles dynamiques - temps de compilation vs temps d'exécution? vont-ils changer (c'est-à-dire gérer les mises à jour dynamiques à partir d'un db). Avez-vous besoin de courir dans un harnais de test ou avec des valeurs fictives et ensuite tester dans le contexte de l'application complète?
Sans savoir plus, je pense que l'héritage et polimorphism est la voie à suivre:
class input
{
public int A { get; set;}
public int B { get; set;}
public int C { get; set;}
}
class output : input {
public int D { get; set;}
public int E { get; set;}
public int F { get; set;}
}
Le vous ne simple:
void main()
{
output tpt = new output();
tpt.A = 3;
tpt.B = 2;
tpt.C = 4;
tpt = dosomething((input)tpt);
}
public output dosomething(input inpt)
{
//blablabla
output tpt = (output)inpt;
tpt.D = 1;
tpt.E = 2;
tpt.F = 3;
return tpt;
}
- 1. Partager style entre classes CSS
- 2. comment puis-je partager une liste chaînée entre deux classes
- 3. Comment partager DAL et BLL entre plusieurs applications .NET?
- 4. Comment partager des classes de modèles entre des applications dans CakePHP?
- 5. Comment puis-je partager des classes de message entre applications lorsque vous utilisez NServiceBus?
- 6. Déploiement ASP.NET - Comment partager BIN entre plusieurs projets WebApp?
- 7. Comment partager les paramètres de configuration entre plusieurs applications
- 8. Partager des widgets entre PyQT et Boost.Python
- 9. Partager des fichiers .obj entre différentes configurations
- 10. Partager des données dll entre différents processus
- 11. Comment partager une propriété entre plusieurs scripts de construction TFS?
- 12. Quel est le meilleur moyen de partager des ressources (icônes/images) entre plusieurs applications Flex?
- 13. Quelle est la meilleure façon de concevoir des classes Cairngorm étendues à partager entre applications?
- 14. Comment puis-je partager des classes entre le client et le serveur?
- 15. Comment partager des données entre des procédures stockées
- 16. Propriétés par défaut des sous-classes UIView
- 17. Partage de propriétés WSS entre des composants WebPart
- 18. Comment partager une table un-à-plusieurs
- 19. Visual Studios - Partager des dossiers entre différents projets
- 20. Comment puis-je partager des données entre C++ et Lua?
- 21. Partager des données de session entre Rails et PHP
- 22. Partager des cookies entre les sessions dans IE7
- 23. Comment appeler des actions entre classes?
- 24. Appel des méthodes @selector entre les classes
- 25. Partage des préférences d'application entre plusieurs projets
- 26. Propriétés récupérées, relations entre magasins
- 27. Partager une applet sur plusieurs pages jsp
- 28. Partager les informations de connexion entre les serveurs ColdFusion?
- 29. Partager des variables entre des fonctions en PHP sans utiliser de globales
- 30. Plusieurs pseudo-classes CSS