Lag / Latensi? Saya memanggil BS tentang itu. Seharusnya tidak ada overhead dari praktik ini. ( Sunting: Telah ditunjukkan dalam komentar bahwa ini dapat, pada kenyataannya, menghambat optimasi yang dilakukan oleh HotSpot VM. Saya tidak cukup tahu tentang implementasi VM untuk mengkonfirmasi atau menyangkal ini. Saya mendasarkan komentar saya pada C ++ implementasi fungsi virtual.)
Ada beberapa kode overhead. Anda harus membuat semua konstruktor dari kelas dasar yang Anda inginkan, meneruskan parameternya.
Saya juga tidak melihatnya sebagai anti-pola, per se. Namun, saya melihatnya sebagai peluang yang terlewatkan. Alih-alih membuat kelas yang mendapatkan kelas dasar hanya untuk penggantian nama, bagaimana kalau Anda membuat kelas yang berisi koleksi dan menawarkan antarmuka yang ditingkatkan khusus untuk kasus tertentu? Haruskah cache widget Anda benar-benar menawarkan antarmuka penuh peta? Atau haruskah ia menawarkan antarmuka khusus?
Lebih jauh, dalam hal koleksi, polanya sama sekali tidak bekerja bersama dengan aturan umum penggunaan antarmuka, bukan implementasi - yaitu, dalam kode koleksi polos, Anda akan membuat HashMap<String, Widget>
, dan kemudian menetapkannya ke variabel tipe Map<String, Widget>
. Anda WidgetCache
tidak dapat memperluas Map<String, Widget>
, karena itu adalah antarmuka. Itu tidak bisa berupa antarmuka yang memperluas antarmuka dasar, karena HashMap<String, Widget>
tidak mengimplementasikan antarmuka itu, dan begitu pula koleksi standar lainnya. Dan sementara Anda bisa menjadikannya kelas yang memanjang HashMap<String, Widget>
, Anda kemudian harus mendeklarasikan variabel sebagai WidgetCache
atau Map<String, Widget>
, dan yang pertama kehilangan Anda fleksibilitas untuk mengganti koleksi yang berbeda (mungkin beberapa koleksi pemuatan malas ORM), sedangkan jenis kedua mengalahkan poin memiliki kelas.
Beberapa tandingan ini juga berlaku untuk kelas khusus yang saya usulkan.
Ini semua poin yang perlu dipertimbangkan. Ini mungkin atau mungkin bukan pilihan yang tepat. Dalam kedua kasus tersebut, argumen yang ditawarkan kolega Anda tidak valid. Jika dia pikir itu anti-pola, dia harus menyebutkannya.