Saya melihat apa yang Anda lakukan dengan 2. Anda menggunakan kelas sebagai paket dan paket sebagai modul sehingga Anda dapat mengisolasi diri Anda dalam paket tetapi masih mengatur dalam paket menggunakan kelas.
Itu sangat pintar. Waspadalah terhadap pintar.
Ini akan memaksa Anda untuk macet beberapa kelas dalam file sumber yang sama (yang mungkin Anda sukai) dan path akan memiliki kata kapital besar.
Ini juga akan memaksa Anda untuk menulis kode uji apa pun di dalam paket kecuali Anda menggunakan refleksi untuk meretas masuk dari luar.
Selain itu, ini akan berhasil. Itu hanya akan tampak aneh.
Orang-orang lebih terbiasa dengan kelas dalam yang digunakan seperti EntrySet di Hashtable. Ini pribadi jadi saya tidak bisa membuatnya tetapi mengimplementasikan antarmuka publik jadi saya hanya berbicara melalui antarmuka dan memiliki sesuatu untuk saya.
Tapi Anda menggambarkan kelas yang tidak ingin saya ajak bicara bahkan melalui antarmuka. Jadi tidak ada antarmuka untuk saya. Ini berarti saya tidak punya apa-apa untuk dilihat dan dikacaukan (kecuali jika Anda memberi saya sumber).
Masalah terbesar yang saya perkirakan adalah pemula yang membingungkan ini memelihara API. Anda dapat melempar dokumentasi dan komentar kepada mereka tetapi jangan terlalu besar ketika mereka tidak membaca atau mempercayai salah satu dari mereka.
Anda telah membuat pola lain yang memperbaiki kekurangan bahasa. Java tidak memiliki pengubah akses yang memberikan akses ke sekelompok paket. Saya pernah mendengar bahwa pengubah akses "modul" telah diusulkan tetapi tidak melihat tanda-tanda akan terjadi.
Pengubah akses default (tanpa pengubah) kemungkinan akan Anda gunakan di sini kecuali jika Anda tidak keberatan saya menyelinap masuk melalui warisan, dalam hal ini dilindungi.
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
Yang Anda inginkan adalah akses modul. Dengan begitu Anda bisa menyimpan tes Anda dalam satu paket dan kode di paket lain. Sayangnya kami tidak memilikinya di Jawa.
Kebanyakan orang hanya melakukan 1 dan memperluas API. Penggunaan antarmuka yang benar menjaga tekanan dari implementasi.
Meretas apa yang Anda inginkan menjadi 1 bahkan lebih buruk. Mengintip tumpukan panggilan dan melemparkan pengecualian setiap kali apa yang memanggil Anda dari paket yang tidak Anda sukai. Eeew.