2009-07-10 34 views
5

Tôi thấy rằng việc viết các ứng dụng web và các ứng dụng WinForm thường trở nên sạch hơn rất nhiều so với khi tôi viết một ứng dụng giao diện điều khiển.Thiết kế giống MVC cho các ứng dụng giao diện điều khiển?

Tôi có ý nghĩa gì với trình dọn dẹp? Thực tế là giao diện người dùng (tức là readline/writeline) được hòa quyện với mã logic trở nên khủng khiếp và thực tế nó không phải là sự kiện điều khiển nghĩa là khó có được sự trừu tượng tốt.

Tôi đã suy nghĩ về điều này và MVC cố gắng giải quyết các vấn đề tương tự cho các ứng dụng web, vì vậy câu hỏi của tôi là có bất cứ điều gì giống như vậy cho các ứng dụng giao diện điều khiển? hoặc bất kỳ hướng dẫn nào để có được thiết kế tốt hơn trong các ứng dụng giao diện điều khiển?

Trả lời

10

Tôi nghĩ bạn sẽ thấy rằng lựa chọn phổ biến cho Bộ điều khiển chế độ xem mô hình là Model-View-Presenter. Mô hình cơ bản là giống nhau giữa hai người. Vai trò của bộ điều khiển và chế độ xem là rất tương tự, nhưng chúng có thể chịu trách nhiệm nhiều hơn một chút tùy thuộc vào việc triển khai của bạn. Trong MVP, có hai phương pháp thực hiện: Kiểm soát giám sát và chế độ xem thụ động. MVP thường được coi là kiến ​​trúc tiêu chuẩn cho các máy khách WinForms và cũng có thể được áp dụng cho WebForms. Dưới đây là một số liên kết có liên quan để biết thêm thông tin:

Cuối cùng, nếu bạn muốn nhặt một cuốn sách, Agile Nguyên tắc, Patterns, và thực tiễn trong C# chứa một hương tuyệt vời cho việc xây dựng một ứng dụng bảng lương dựa trên bảng điều khiển.Sau khi đã hoàn thành, họ xây dựng giao diện người dùng WinForms để hiển thị cách kiến ​​trúc ứng dụng của họ cho phép họ thêm chế độ xem mới với ít phiền toái nhất.

+0

tôi xin lỗi vì sự thiếu siêu liên kết thực tế, nhưng tôi là một người dùng mới và đang giới hạn về số lượng mà tôi có thể đăng bài. –

+0

@Brad, chào mừng bạn đến với StackOverflow! Tôi đã thêm siêu liên kết vào bài đăng của bạn. – CoderDennis

0

Kiểm soát chế độ xem mô hình là mẫu thiết kế và như vậy có thể áp dụng cho cả ứng dụng web và ứng dụng giao diện điều khiển. Có lẽ bạn nên đặt câu hỏi Làm thế nào để bạn áp dụng MVC cho ứng dụng giao diện điều khiển của bạn.

Trân

0

Tôi nghĩ rằng bạn vẫn có thể sử dụng MVC cho giao diện điều khiển ứng dụng.

Hãy nhớ rằng trong các ứng dụng web và WinForms, rất nhiều tương tác được trừu tượng ra khỏi bạn, nhưng vẫn tồn tại trong logic chế độ xem, ví dụ: yếu tố nào để hiển thị khi nhấp vào tab.

Đó là loại tương tác mà bạn phải tự viết mã trong ứng dụng bảng điều khiển, nhưng không có lý do gì không thể thực hiện hoàn toàn trong mã cho chế độ xem.

Việc tôi thực hiện MVC là chế độ xem hoàn toàn chịu trách nhiệm hiển thị đúng dữ liệu, tùy chọn, v.v. Trong ánh sáng đó, nó không phải là tội có logic trong khung nhìn, miễn là logic chỉ liên quan đến cách hiển thị nội dung. Tất nhiên, việc chia nhỏ khung nhìn thành các lớp khác nhau có thể làm cho mọi thứ trở nên dễ dàng hơn (ví dụ, bạn có thể chia mã xem thành mẫu MVC, mặc dù có thể trở nên phức tạp thực sự nhanh chóng với các thực thể như IAppView, IAppViewController, IAppViewView, bạn nhận được điểm :)).

3

MVC ví dụ giao diện điều khiển ứng dụng:

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(); 
     } 
    } 
Các vấn đề liên quan