2015-01-29 10 views
5

Tôi hiện đang tạo một ứng dụng có mã chia sẻ trên chương trình phụ trợ. Như các lớp trình bày tôi đang sử dụng WinForms, Cocoa (MonoMac) và GTK # (Linux).Tách UI trừu tượng và Giao diện người dùng cụ thể để phát triển nền tảng chéo (WinForms, Cocoa, GTK +)

Tôi đang tìm cách để mô tả giao diện người dùng của mình theo cách trừu tượng, để triển khai giao diện người dùng cụ thể (Cocoa, WinForms, GTK #) chỉ cần lo lắng về việc hiển thị và vẽ.

Điều này để tôi có thể - kết nối các sự kiện (nhấp chuột vào nút, nhập dữ liệu) từ chế độ xem cụ thể và liên kết chúng với hàm trong bộ điều khiển/hoặc trình xử lý chế độ xem trừu tượng ..? - để cho trình điều khiển/chế độ xem/mô hình trừu tượng cập nhật chế độ xem ..? Vì vậy, về cơ bản tôi đang cố gắng để có được một loại IView, IController và thiết lập IModel đi .. hoặc Model-View-Presenter, hoặc MVVM, có bất kỳ ứng dụng ví dụ ra khỏi đó ...?? Bởi vì có rất nhiều lý thuyết, nhưng không có ví dụ cụ thể.


EDIT tháng 1 năm 2017: "Electron"

Đối với những người muốn làm cho các ứng dụng đa nền tảng cho máy tính để bàn tất cả trên Linux/Windows và MAC Tôi muốn đề nghị cũng nhìn vào Electron (electron.atom.io). Về cơ bản nó là Chromium + NodeJS - có nghĩa là thiết kế giao diện người dùng cho một trình duyệt với sức mạnh của các gói Node (và npm). Bạn cũng có thể móc mã .NET qua EdgeJS.

Trả lời

4

EDIT Tháng 1 năm 2017: "Electron"

Đối với những người muốn làm cho các ứng dụng đa nền tảng cho máy tính để bàn tất cả trên Linux/Windows và MAC Tôi muốn đề nghị cũng nhìn vào Electron (electron.atom.io). Về cơ bản nó là Chromium + NodeJS - có nghĩa là thiết kế giao diện người dùng cho một trình duyệt với sức mạnh của các gói Node (và npm). Bạn cũng có thể móc mã .NET qua EdgeJS.


Mọi dự án đều có nhu cầu riêng, nhưng những người khác cố gắng tìm câu trả lời, đây là những gì tôi đã triển khai.

Tôi quyết định điều tra Thụ độngMẫu thiết kế-View-Presenter mẫu thiết kế. Để đọc chi tiết, hãy kiểm tra Wikipedia article hoặc this article by Martin Fowler. Một triển khai thay thế khác là "thedersen.com" - read the article here.


Tuỳ chỉnh thực hiện

tôi đã kết thúc làm cho thực hiện cơ bản của riêng tôi trong những mẫu thiết kế. Điều này để hiểu rõ hơn về mô hình và có nhiều quyền kiểm soát hơn đối với các chi tiết triển khai. Cái thứ hai quan trọng vì việc triển khai sẽ cần phải có khả năng xử lý nhiều kỹ thuật giao diện người dùng khác với các kỹ thuật tiêu chuẩn của Microsoft. Ví dụ: Cocoa (MonoMac), GTK# (GTK+), v.v ...

Các implemantation sẽ thực hiện Passive Xem, và sẽ nhớ các nguyên tắc trong tâm trí:

  • Tương tác với các mô hình được xử lý độc quyền bởi người dẫn chương trình;
  • Chế độ xem được cập nhật độc quyền cho người trình bày;
  • Chế độ xem có thể thông báo cho người trình bày bằng các sự kiện phát sóng;

Diagram

enter image description here


Khung Mã Kiểm tra pastebin này cho các giao diện và các lớp cơ sở. http://pastebin.com/k6xhwrJ8

Ví dụ Mã

Ví dụ sẽ hiển thị một màn hình loading cơ bản (bootstrapper). Tất cả mã đều không bao giờ hết hạn. Một số phương pháp (để tạo và instantiating điều khiển) không có mặt, vì đây không phải là trọng tâm của ví dụ ofcourse.

Example of how it looks on Windows. On MacOS the view will have it's native UI ofcourse.


Đó kết thúc tốt đẹp giải pháp cơ bản của tôi. Đó là baisc có, nhưng nó giúp tôi tạo mã phụ trợ và đừng lo lắng quá nhiều về cách liên kết các khung nhìn với nhau.

điểm mở rộng có thể bao gồm:

  • Thêm một người quản lý người dẫn chương trình và xem, do đó người ta có thể làm việc theo cách IoC ...
  • Thêm nhiều quan điểm cơ sở mở rộng và thuyết trình cho các kịch bản khác nhau ...
+1

Vì bạn đã đánh dấu câu trả lời này là một câu trả lời chính xác ... không nhiều người sẽ thử tiền thưởng. –

+0

Ok, bỏ đánh dấu nó ngay bây giờ rồi - thx cho mẹo @JeremyThompson –

Các vấn đề liên quan