11

Gần đây Erik Meijer và những người khác đã hiển thị cách IObservable/IObserverdual của IEnumerable/IEnumerator. Thực tế là chúng là hai phương tiện mà bất kỳ hoạt động nào trên một giao diện đều hợp lệ trên một giao diện khác, do đó cung cấp nền tảng lý thuyết cho Reactive Extentions for .NetVí dụ về các giao diện kép hữu ích hoặc không có trival

Các giao diện kép khác có tồn tại không? Tôi quan tâm đến bất kỳ ví dụ nào, không chỉ dựa trên Net.

+1

Hãy cẩn thận với cụm từ "giao diện kép". Mặc dù việc sử dụng cụm từ * dual * rõ ràng là chính xác ở đây, nhưng cụm từ * giao diện kép * thường được liên kết với 'IDispatch' và tự động hóa, điều này hơi khó hiểu (đó là điều tôi nghĩ câu hỏi này trước khi tôi mở nó). – Aaronaught

Trả lời

3

Ví dụ khác sẽ là TextReaderTextWriter, mặc dù thậm chí có nhiều tiếng ồn hơn trong trường hợp có thể quan sát và đếm được. Về nguyên tắc chữ ký loại sẽ là:

interface ITextReader { 
    // Read: void -> int 
    int Read(); 
} 

interface ITextWriter { 
    // Write: int -> void 
    void Write(int val); 
} 
3

Một ví dụ khác là loại sản phẩm AB và loại tổng A + B của hai loại A và B. Trong Haskell bạn có thể viết chúng như:

data Prod a b = P a b -- this is the same as the pair type (a,b)

data Sum a b = Left a | Right b -- the same as the Either a b type

séc here để biết chi tiết

2

Hiệp phương sai và contravariance là anothe Ví dụ r. Tôi nghĩ. Tôi có thể sai.

Bart De Smet says: "Rất nhiều nhị nguyên tồn tại trong lĩnh vực khác nhau, cung cấp cho chuyển giao tri thức lớn giữa các lĩnh vực khác nhau Ví dụ, trong logic hình thức, luật De Morgan cho phép chuyển đổi biểu thức xây dựng từ liên từ thành những người xây dựng từ disjunctions, và ngược lại.. Trong thiết bị điện tử, các điểm tương đồng tồn tại giữa hành vi của các tụ điện và điện cảm: biết một và làm thế nào để đi qua lại giữa các tên miền, và bạn biết cái kia. Tính toán Fourier cung cấp các nhị phân giữa các miền thời gian và tần số. " Hấp dẫn.

Họ cũng gọi System.Reactive là hệ thống kép của System.Interactive. Vì vậy, hầu hết các chức năng trong một trong các hội đồng có nó là kép trong khác. Để làm rõ, nó không chỉ là IO là dual của IE, nhưng các chức năng hoạt động trên chúng cũng được dualized.

Vì vậy, để trả lời câu hỏi của bạn, nhiều giao diện kép được tồn tại. Bạn có thể dualize bất kỳ giao diện. Bạn chỉ cần trao đổi đầu vào và đầu ra và hướng của hàm. Một số sẽ không hữu ích, hoặc sẽ là đôi của mình. Tuy nhiên, đôi khi có những người thực sự mạnh mẽ ẩn chờ đợi để được phát hiện.

+0

Bỏ phiếu để trích dẫn blog tuyệt vời của Bart De Smet. :-D –

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