Dalam kebanyakan bahasa pemrograman, kelas menghindari banyak tipe sistem. Meskipun kelas, dengan metode dan variabel statisnya adalah objek, sering kali ia tidak dapat mengimplementasikan antarmuka atau memperluas kelas lain. Oleh karena itu, ini tidak dapat digunakan secara polimorfik, karena tidak dapat menjadi subtipe dari tipe lain. Misalnya, jika Anda memiliki antarmuka IFooable
, yang diperlukan oleh beberapa metode tanda tangan dari kelas-kelas lain, objek kelas StaticFoo
tidak dapat digunakan di tempat IFooable
, sedangkan FooSingleton.getInstance()
kaleng (dengan asumsi, FooSingleton
alat IFooable
).
Harap dicatat, bahwa, saat saya mengomentari jawaban Heinzi, singleton adalah pola untuk mengontrol instansiasi. Ini menggantikan new Class()
dengan Class.getInstance()
, yang memberi penulisClass
kontrol lebih besar atas instance, yang dapat dia gunakan untuk mencegah pembuatan instance yang tidak perlu. Singleton hanyalah kasus yang sangat khusus dari pola pabrik dan harus diperlakukan seperti itu. Penggunaan umum membuatnya menjadi kasus khusus dari pendaftar global, yang seringkali berakhir buruk, karena pendaftar global tidak boleh digunakan sembarangan.
Jika Anda berencana untuk menyediakan fungsi helper global, metode statis akan berfungsi dengan baik. Kelas tidak akan bertindak sebagai kelas, melainkan hanya sebagai namespace. Saya sarankan, Anda mempertahankan kohesi tinggi, atau Anda mungkin berakhir dengan masalah kopling yang paling aneh.
greetz
back2dos