Je trouve que la rédaction des applications Web et Winform Apps sortent généralement beaucoup plus propre que lorsque j'écris une demande de console. p>
Qu'est-ce que je veux dire par nettoyant? Eh bien le fait que le fait que l'interface utilisateur (c'est-à-dire readline / écrivain) est aussi étroitement liée au code de la logique devient horrible et le fait que ce ne soit pas piloté d'événement signifie qu'il est plus difficile d'obtenir une bonne abstraction. p>
Je pensais à cela et MVC tente de résoudre des problèmes similaires pour les applications Web, alors ma question est donc une chose comme celle des applications de console? ou des guides pour obtenir une meilleure conception dans les applications de console? P>
4 Réponses :
Le contrôle de la vue du modèle est un modèle de conception et, en tant que tel, s'applique aux applications Web et aux applications de la console. Peut-être devriez-vous poser la question comment appliquez-vous MVC à votre application de console? P>
Cordialement p>
Je pense que vous pouvez toujours utiliser MVC pour les applications de console. P>
N'oubliez pas que dans les applications Web et Winforms, beaucoup d'interaction sont abstraitées de votre part, mais sont toujours présents dans la logique de vue, par ex. Quels éléments montrent quand un onglet est cliqué. p>
C'est le type d'interaction que vous devez coder vous-même dans une application de console, mais il n'y a aucune raison pour que cela ne puisse pas être fait entièrement dans le code de la vue. P>
Ma prise sur MVC est que la vue est entièrement responsable de l'affichage des bonnes données, des options, etc. Dans cette lumière, ce n'est pas un crime d'avoir une logique dans la vue, tant que la logique n'est liée que sur la manière dont des trucs sont affichés. P>
Bien entendu, la vision dans différentes classes facilitera probablement les choses un peu plus faciles (par exemple, vous pouvez diviser le code de vue elle-même en un motif MVC, bien que cela puisse devenir compliqué très rapidement avec des entités telles que IAPPPVIEW, IAPPPIEWCONTROLLER, IAPPPVIEWVIEW , vous avez le point :)). P>
Je pense que vous constaterez que la variante populaire au contrôleur d'affichage du modèle est une présentatrice de vue modélisateur. Le modèle est fondamentalement la même chose entre les deux. Le rôle du contrôleur et de la vue sont très em> similaires, mais ils peuvent avoir un peu plus de responsabilité en fonction de votre mise en œuvre. Au sein du MVP, il existe deux méthodes de mise en œuvre: contrôleur superviseur et vue passive. Le MVP est généralement considéré comme l'architecture standard pour les clients WinForms et peut également être appliquée à des formes Web. Voici quelques liaisons pertinentes pour plus d'informations: P>
Enfin, si vous souhaitez récupérer un livre, des principes agiles, des modèles et des pratiques en C # contient une excellente promotion pour la construction d'une application de paie basée sur la console. Une fois compété, ils construisent à Winforms UI pour montrer comment leur architecture d'application leur permettait d'ajouter une nouvelle vue avec une fussité minimale. P>
Je m'excuse pour le manque d'hyperliens réels, mais je suis un nouvel utilisateur et je suis plafonné sur le nombre que je peux poster.
@Brad, bienvenue à Stackoverflow! J'ai ajouté les hyperliens à votre message.
MVC Exemple d'application de la console:
public interface IController { void RequestView(IView view); IView ResponseView(); } public interface IView { int GetID { set; get; } void DisplayId(); } public interface IModel { int GenrateID(int id); } //Business logic in Model public class Model : IModel { public int GenrateID(int id) { id = id * 10; return id; } } //Event Logic in Controller public class Controller : IController { private IModel model; private IView responseView; public Controller() { responseView = new View(); } public void RequestView(IView view) { model = new Model(); responseView.GetID = model.GenrateID(view.GetID); } public IView ResponseView() { return responseView; } } //Display Logic in View public class View : IView { public int GetID { get;set; } public void DisplayId() { Console.Write(GetID); } } class Program { static void Main(string[] args) { IController ctr = new Controller(); int input =int.Parse(args[0]); IView view=new View() { GetID = input }; ctr.RequestView(view); view =ctr.ResponseView(); view.DisplayId(); } }