On 10/24/2017 3:36 AM, Satoshi wrote:
Can you provide an example?

I'd start with https://dlang.org/spec/interface.html

You'll see the same thing with Windows COM programming, and using interfaces in Java.

---- view.di ----
interface View {
    void render();
}
View createView();

---- button.di ----
import view;
interface Button : View {
    void simulateClick();
}
Button createButton();

---- closed_src_library.d ----
import view, button;
private class LibraryView : View {
   int hidden_data;
   void render() { do something with hidden_data }
}

private class LibraryButton : Button {
    int hidden_data;
    void simulateClick() { .... }
}

View createView() {
    return new LibraryView();
}

View createButton() {
    return new LibraryButton();
}

--- my_extension.d ---
import view, button;
class ExtendView : View {
    View base;
    this() {
        base = createView();
    }
    void render() {
        base.render();
        ... do my rendering ...
    }
}

Reply via email to