2 ile ne yaptığınızı görüyorum. Sınıfları paket olarak ve paket olarak modül olarak kullanıyorsunuz, böylece kendinizi paketin içinde izole edebiliyorsunuz, ancak yine de sınıfları kullanarak paket içinde organize edebiliyorsunuz.
Bu çok zekice. Akıllıca sakının.
Bu, aynı kaynak dosyada (tercih edebileceğiniz) birden çok sınıfı sıkışmaya zorlar ve yolun fazladan büyük bir sözcüğü olur.
Bu, dışarıdan içeri girmek için yansıma kullanmadığınız sürece, paket içinde herhangi bir test kodu yazmaya zorlar.
Bunun dışında, bu işe yarayacak. Sadece tuhaf görünecek.
İnsanlar Hashtable'da EntrySet gibi kullanılan iç sınıflara daha alışkınlar . Özeldir, bu yüzden onu oluşturamıyorum ama genel bir arayüz uyguluyor, bu yüzden sadece arayüz aracılığıyla konuşuyorum ve benim için bir şey var.
Ama bir arayüz aracılığıyla bile konuşmamı istemediğiniz sınıfları tanımlıyorsunuz. Yani benim için arayüz yok. Bu, bakacak ve kafam karışacak bir şeyim olmadığı anlamına gelir (bana kaynak sağlamadığınız sürece).
Tahmin ettiğim en büyük sorun, API'yi koruyan bu kafa karıştırıcı yeni başlayanlar. Dokümanları ve yorumları onlara atabilirsiniz, ancak ikisini de okumadıklarında veya güvenmediklerinde yerini almayın.
Dilde bir eksikliği telafi eden başka bir model daha oluşturdunuz. Java'nın bir grup pakete erişim izni veren erişim değiştiricisi yoktur. Bir "modül" erişim değiştiricisinin önerildiğini duydum, ancak bunun belirtisi olmadığını gördüm.
Varsayılan erişim değiştirici (değiştirici yok), miras yoluyla gizlice girmekten sakıncası yoksa, bu durumda korunacağınız olasılıkla burada kullanacağınız şeydir.
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
Gerçekten istediğiniz modül erişimidir. Bu şekilde testlerinizi bir pakette ve kodunuzu başka bir pakette tutabilirsiniz. Ne yazık ki Java'da yok.
Çoğu kişi sadece 1 yapar ve API'yı genişletir. Arayüzlerin doğru kullanımı, uygulamanın baskısını önler.
İstediğinizi 1'e kesmek daha çirkin. Çağrı yığınına bakın ve sizi aradığınız şey hoşunuza gitmeyen bir paketten olduğunda bir istisna atın. Vayyy.