Model-view-controller (MVC) adalah pola yang digunakan untuk
mengisolasi logika dari antarmuka pengguna. Menggunakan MVC, Model merupakan
informasi (data) dari aplikasi dan aturan yang digunakan untuk memanipulasi
data, View sesuai dengan elemen user interface seperti teks, item kotak
centang, dan sebagainya, dan Controller mengelola rincian melibatkan komunikasi
antara model dan view. Controller menangani tindakan pengguna seperti
keystrokes dan gerakan mouse ke dalam model atau tampilan yang diperlukan.
Di sini saya akan menunjukkan contoh kalkulator dalam
arsitektur MVC. Sebuah gambaran singkat; Formulir akan menangani view dan event yang akan diteruskan ke kontroler yang kemudian akan memanggil
method pada model, seperti Tambah / Kurangi / NumberPress. Model mengurus semua
pekerjaan dan memegang event
saat ini kalkulator. Hal yang sulit tentang MVC adalah tempat yang terpisah
dapat membingungkan.
Ciri khas pola Instansiasi MVC terlihat
seperti berikut ini. Sebuah hal penting yang harus diperhatikan; controller
mengambil sebuah antarmuka untuk tampilan dan model. Hal ini penting untuk
mengetahui bahwa view biasanya akan berinteraksi dengan controller
jika perlu pemberitahuan event melalui tampilan (seperti klik tombol).
static class Program { static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); frmCalcView view = new frmCalcView(); CalculatorModel model = new CalculatorModel(); CalcController controller = new CalcController(model, view); Application.Run(view); } }
class CalcController : IController { ICalcModel model; ICalcView view; public CalcController( ICalcModel model, ICalcView view) { this.model = model; this.view = view; this.view.AddListener(this); } public void OnClick( int number ) { view.Total = model.SetInput(number).ToString(); } public void OnAdd() { model.ChangeToAddState(); } }
Perhatikan bahwa view tidak berinteraksi dengan model, itu hanya menerima permintaan update dari controller. Kontroler akan mengakses view melalui total properti. View juga melewati event klik pada controller.View ini tidak harus tahu tentang Controller, kecuali kita harus memberikan pemberitahuan beberapa event sehingga lewat dalam IController. Lalu memanggil event handler pada kontroler melalui IController.public partial class frmCalcView : Form, ICalcView { IController controller; public frmCalcView( ) { InitializeComponent(); } public void AddListener( IController controller ) { this.controller = controller; } private void lbl_Click(object sender, EventArgs e) { controller.OnClick((Int32.Parse(((Label)sender).Text))); } private void lblPlus_Click(object sender, EventArgs e) { controller.OnAdd(); } ICalcView Members public string Total { get { return textBox1.Text; } set { textBox1.Text = value; } } }Sekarang kita akan melihat pada model. Perhatikan bahwa itu harus melakukan "pekerjaan" dari kalkulator dan menangani negara.class CalculatorModel : ICalcModel { public enum States { NoOperation, Add, Subtract }; States state; int currentValue; public States State { set { state = value; } } public int SetInput ( int number ) { if (state == States.NoOperation) { currentValue = number; } else if (state == States.Add) { currentValue = Add(currentValue , number ); } return currentValue; } public void ChangeToAddState() { this.state = States.Add; } public int Add( int value1, int value2 ) { return value1 + value2; } public int Subtract(int value1, int value2) { throw new System.ApplicationException(" Not implemented yet"); } }
Tidak ada komentar:
Posting Komentar