Tempat meletakkan metode bersama yang umum


9

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

Apakah ini seperti metode Util murni yang tidak menyelamatkan negara atau apakah mereka menyelamatkan negara?
TheLQ

1 untuk tidak jatuh ke dalam perangkap tunggal.
Caleb

@TheLQ Mereka tidak harus menyimpan status, tetapi mereka akan menyimpan data const (seperti grafik konversi) untuk kenyamanan.
Lee Louviere

Jawaban:


4

Namespace bisa [application].Common.Shared

Kelas bisa dinamai:

ConversionLookup
ClipboardCommunication
FontManager
DrawingUtility

Saya akan memecah kelas karena sepertinya mereka melakukan hal yang berbeda.


1

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.


1

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.