2012-02-23 34 views
5

Tôi đã là một lập trình viên python 7+ năm nay, và được thiết kế với PyQt trong hơn 3 năm ... Nhưng tôi không phải là một Sci được đào tạo theo kiểu cổ điển. chính. Gần đây tôi đã học được Go và đã tích cực theo dõi Golang-nuts discussion list được lấp đầy với các nhà phát triển cực kỳ thông minh. Từ nhóm thảo luận này, tôi đã thấy nhiều tham chiếu đến các mẫu thiết kế phần mềm, như Observer, Reactor, vv Một lần nữa vì tôi không phải là chuyên ngành CS, tôi chưa bao giờ thực sự học được tất cả thuật ngữ và lý thuyết này, nhưng nó khiến tôi băn khoăn ..Các mẫu thiết kế phần mềm nào làm các khuôn khổ GUI phổ biến hiện diện?

Các mẫu thiết kế nào làm các khuôn khổ GUI thông dụng như triển lãm Qt, wx, GTK?

Tôi có cảm giác giống như một hỗn hợp các mẫu cho các thành phần khác nhau, chẳng hạn như vòng lặp sự kiện so với tín hiệu/khe hoặc ràng buộc so với Quan sát khóa-giá trị, v.v. Tôi rất thích nghe một lời giải thích hoặc khái quát về cách các mẫu phần mềm này ánh xạ tới các thành phần truyền thống của các khuôn khổ này.

Là một phần tử phụ của câu hỏi này: Có các khung công tác GUI nào cố gắng và thực hiện một phương pháp tiếp cận hoàn toàn khác với giải pháp GUI không? Ca cao/khách quan-c có sử dụng các mẫu vòng lặp sự kiện giống như các mẫu khác không?

Cập nhật
Để giúp thu hẹp trọng tâm của câu hỏi của tôi, và dựa trên các câu trả lời bằng @HDDimon, tôi chủ yếu là tự hỏi về Patterns Hành vi (truyền thông):
http://en.wikipedia.org/wiki/Design_Patterns#Behavioral_patterns

Trả lời

5

Good day. Tôi nghĩ câu trả lời tốt nhất mà bạn sẽ tìm thấy trong bài viết GUI Architectures của Martin Fowler.

từ bài viết này:

Model View Controller Có lẽ mô hình được trích dẫn rộng nhất trong việc phát triển giao diện người dùng là Model View Controller (MVC) - nó cũng nhất trích dẫn sai. Tôi đã mất số lần tôi đã nhìn thấy một cái gì đó mô tả như MVC mà hóa ra là không có gì giống như nó. Thành thật mà nói, rất nhiều lý do của là các phần của MVC cổ điển không thực sự có ý nghĩa cho các khách hàng phong phú những ngày này. Nhưng trong thời điểm này, chúng tôi sẽ xem xét nguồn gốc của nó.

Tại trung tâm của MVC, và ý tưởng đó là hầu hết có ảnh hưởng đến sau khuôn khổ, là cái mà tôi gọi Ly trình bày. Ý tưởng đằng sau Bản trình bày tách biệt là tạo một phân chia rõ ràng giữa các đối tượng miền mô hình nhận thức của chúng ta về thế giới thực, và đối tượng trình bày là các yếu tố GUI mà chúng ta thấy trên màn hình . Các đối tượng miền phải được hoàn toàn khép kín và hoạt động mà không cần tham chiếu đến bản trình bày, chúng cũng có thể hỗ trợ nhiều bản trình bày, có thể cùng một lúc. Cách tiếp cận này cũng là một phần quan trọng của nền văn hóa Unix, và tiếp tục ngày hôm nay cho phép nhiều ứng dụng được điều khiển thông qua cả giao diện đồ họa và giao diện dòng lệnh.

Theo bài viết này, các loại mẫu tốt nhất để phân chia giữa bất kỳ loại thành phần nào là Mẫu kết cấu.

từ "Design Patterns: Elements of Reusable Object-Oriented Software" của "Gang of Four": Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. (Tôi thực sự muốn khuyên bạn nên đọc cuốn sách tuyệt vời này)

  • Patterns Cấu trúc:
    • Adaptor
    • Cầu
    • composite
    • Decorator
    • Facade
    • hạng ruồi
    • Proxy

Nhưng trong bất kỳ loại khuôn khổ nào bạn có thể thấy kết hợp từ một số loại mẫu: mẫu quảng cáo, mẫu kết cấu, mẫu hành vi.

Tôi đã tìm thấy một relational diagram between patterns từ sách Design Patterns, nó có thể hữu ích cho việc sử dụng hàng ngày.

UPD: Tuyệt vời SO answer đã thêm.

+0

Cảm ơn bạn rất nhiều về thông tin này. Tôi rất quen thuộc với MVC vì nó khá phổ biến với các framework khác. Tôi chắc chắn sẽ kiểm tra tài liệu tham khảo của bạn. Nhưng, tôi cũng hy vọng ai đó sẽ tập trung câu trả lời của họ cụ thể hơn vào các khung công tác GUI phổ biến và các phương thức giao tiếp của họ. Vòng lặp sự kiện, các khe tín hiệu, kvo, thông báo/sự kiện trôi qua, vv Tôi rõ ràng có thể đọc một cuốn sách về các mẫu thiết kế chung, nhưng tôi muốn nghe các ví dụ trực tiếp và cụ thể cho các khung công tác GUI này. Bất kỳ thông tin bổ sung? – jdi

0

Tôi tìm thấy hướng dẫn GUI hoàn hảo của Google, bao gồm các ràng buộc thiết kế và nguyên tắc phù hợp với các mẫu cấu trúc chung.

Cũng tìm thấy các GUI Design Books này, liên quan đến mẫu hoạt động và điều này GUI Patterns Site hữu ích.

+0

Cảm ơn bạn đã trả lời, nhưng tôi nghĩ đây là kiểu mẫu sai so với câu hỏi của tôi. Đây là các mẫu thiết kế có nhiều mô tả kiểu UX hơn. Tôi đã hỏi về Comp Sci. Các mẫu lập trình kiểu, chẳng hạn như mẫu Observer. Không phải là mẫu để đánh dấu hộp kiểm và điều đó có ý nghĩa gì đối với tương tác của người dùng – jdi

+0

Tôi đang tìm kiếm cùng loại thông tin khi tìm thấy câu hỏi của bạn. Vẫn chưa tìm thấy bất kỳ điều gì về việc cấu trúc mã dự án GUI, giống như các mẫu của Gang of Four, nhưng đặc biệt cho GUI (ngoại trừ một số mẫu). Bạn có tìm thấy điều gì cơ bản về chủ đề này không? – Zon

+0

Câu trả lời được chấp nhận là câu trả lời hay nhất tôi có cho đến nay – jdi

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