My first try of MVC. Am trying to implement a simple example. Inspiration from here. Have I got this pattern (yet!)?
-
View: “Hey, controller, the user just told me he wants the first person”
-
Controller: “Hmm, having checked his credentials, he is allowed to do that… Hey, model, I want you to get me the first person”
-
Model: “First person… got it. Back to you, Controller.”
-
Controller: “Here, I’ll collect the new set of data. Back to you, view.”
-
View: “Cool, I’ll show the first person to the user now.”
View:
namespace WinFormMVC
{
public partial class Form1 : Form
{
controller cont = new controller();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = cont.checkPermissionsAndGetFirstPerson();
}
}
}
Controller:
public class controller
{
public string checkPermissionsAndGetFirstPerson()
{
string returnValue = "";
if (checkPermissions())
{
model m = new model();
returnValue = m.getFirstPerson();
}
return returnValue;
}
public bool checkPermissions()
{
return true;
}
}
Model:
public class model
{
public string getFirstPerson()
{
return "Bill Smith";
}
}
Hmm… I am not sure if I’d call this MVC… As with ASP.NET WebForm, this form is more like an MVP pattern.
As per my understanding, in MVC, controller is the one responsible for managing all resources and flow of the code. In your example, you basically creating a Windows Form first (the view) and then attach a controller to it which is more of a MVP sort of things.
In a classical MVC pattern, the Model, once instantiated, will be linked to the View and when the model changes, the view will get notified (possibly through Observer / PubSub pattern).
Button click, etc. from the View will be routed to the controller which will coordinate those sort of stuffs.
see: this.