Saya memiliki banyak metode yang umum digunakan di mana-mana. Sekarang codefile bernama global, untuk mewakili fakta bahwa mereka ... sebenarnya ... global.
Namun, saya tidak suka ini.
Saya ingin mengelompokkan ini ke dalam kelas dan membagikan antarmuka. Saya hanya akan membuat satu contoh, tapi saya tidak jatuh ke dalam perangkap tunggal di sini.
Pertama-tama, apa yang harus saya beri nama kelas. Saya ingin menghindari nama global karena saya khawatir pengelola akan mendapatkan ide yang salah.
Juga, bagaimana saya harus mempertimbangkan memecah seperangkat metode sehingga perilaku dapat berubah dan beradaptasi?
Set metode berisi hal-hal seperti:
- Tabel konversi
- Interaksi papan klip
- Mengelola font yang dibangun
- Metode menggambar umum
- Menyediakan antarmuka dengan akses ke sumber daya yang sering digunakan
Jawaban:
Namespace bisa
[application].Common.Shared
Kelas bisa dinamai:
Saya akan memecah kelas karena sepertinya mereka melakukan hal yang berbeda.
sumber
Jika Anda akan membuat satu contoh, Anda memiliki banyak singleton. Juga, hal yang biasanya dirujuk oleh orang-orang jika mereka berbicara tentang jebakan tunggal adalah bahwa lajang bersifat global, dan sebagian besar kelas lebih baik tidak menjadi global. Jadi Anda mungkin juga memiliki singleton. Jika Anda dapat dengan wajar mengirimkan antarmuka ke objek yang mungkin ingin menyebutnya maka itu tidak terlalu global.
Selain itu, menempatkan semuanya dalam satu kantong metode global membuatnya sulit untuk memiliki perubahan perilaku dan beradaptasi karena tidak hanya setiap perubahan pada satu metode memerlukan subkelas baru, tetapi setiap kombinasi perubahan akan membutuhkannya subkelas itu sendiri.
Saya akan merekomendasikan memiliki lajang untuk masing-masing yang benar-benar global (saya akan mengambil kata Anda semua) dan beberapa jenis registri atau pabrik yang memberi Anda contoh (yang berarti Anda dapat menerapkan sebagai singleton atau tidak, karena antarmuka akan jangan membuat janji). Saya akan menamai mereka berdasarkan apa yang mereka lakukan dari sudut pandang penelepon.
sumber
Saya biasanya meletakkan hal-hal semacam ini dalam nama majelis mereka sendiri seperti "foo.Common" di bawah namespaces seperti "foo.Common.Collections" atau "foo.common.UI" dll. Lalu, saya dapat merujuk perakitan di proyek apa pun Saya membutuhkan mereka.
sumber