Saya sedang mengembangkan perangkat lunak tangkapan layar yang dapat memuat plugin dari JAR. Itu dikembangkan menggunakan paket API, yang terbuat dari antarmuka untuk diimplementasikan, sehingga orang yang ingin membuat plugin tidak harus menggunakan kode sumber lengkap.

Ini berfungsi dengan baik untuk menambahkan tindakan serupa (Unggah ke X atau X Host misalnya), tetapi bagaimana jika saya ingin mengirim variabel sebaliknya, seperti dari plugin TO the core ? Bagaimana saya harus melakukan ini?

Satu-satunya solusi yang dapat saya pikirkan adalah menggunakan panggilan balik, tetapi saya tidak menemukan ini begitu bersih ...

Omong-omong, apakah solusi saya menggunakan antarmuka yang diimplementasikan devs, yang kemudian saya instantiate sudah benar? Atau ada cara yang lebih baik?

0
Nathan J 10 Januari 2018, 01:48

1 menjawab

Jawaban Terbaik

Solusi Anda adalah cara paling umum untuk menerapkan skenario seperti itu. Anda memberi plugin sebuah instance dari sebuah kelas (dibuat oleh inti) dan mereka dapat menyimpannya untuk penggunaan di masa mendatang (misalnya untuk meneruskan data ke inti atau memicu tindakan lain). Biasanya nama kelas tersebut diakhiri dengan Konteks (misalnya BundleContext, PluginContext, dll.).

Pola lain adalah dengan menggunakan semacam kelas Mediator. Kelas dengan beberapa metode statis yang dapat digunakan plugin untuk mengirim beberapa data ke inti atau memicu beberapa tindakan. Saya tidak menyukainya dan ini bukan solusi yang sangat bersih, tetapi ini mempermudah pengembang plugin untuk mengakses API karena mereka tidak perlu menyimpan instance konteks dan menghormati siklus hidupnya. Pola ini digunakan secara luas dalam arsitektur IntelliJ IDEA.

Saat Anda mengembangkan sistem berbasis plugin, saya sangat menyarankan Anda untuk melihat arsitektur dan API OSGi. Hal ini dapat membantu dalam hal ini.

1
zaerymoghaddam 9 Januari 2018, 23:54