Solver Properti Propertiesolver, terutama memiliki dua fungsi:
Dapatkan nilai properti PropertyValue yang sesuai (GetProperty) melalui nama properti Properti Properti.
Ganti placeholder properti dalam format $ {propertieName: DefaultValue} dengan nilai aktual (ResolvePlaceHolders).
CATATAN: Nilai properti yang diperoleh oleh GetProperty adalah semua nilai setelah menelepon pemegang tegak untuk penggantian placeholder.
Diagram sistem komponen adalah sebagai berikut:
Antarmuka Propertiesolver:
Antarmuka ini mendefinisikan semua fungsi yang dimiliki komponen. Salah satunya adalah mendapatkan nilai yang sesuai melalui kunci. Ketika nilai tidak dapat diperoleh, ada 3 opsi: mengembalikan nilai nol, gunakan nilai default yang ditentukan, atau lemparkan pengecualian keadaan ilegal. Nilai yang diperoleh adalah tipe string secara default. Tentu saja, ini juga dapat dianggap menentukan jenis, yang tergantung pada layanan konversi untuk konversi jenis.
Ada masalah lain: Nilai properti dapat berisi placeholder dalam format $ {}, sehingga fungsi lain telah ditambahkan ke antarmuka adalah untuk menggantikan placeholder dalam nilai properti (Catatan: Placeholder tidak diizinkan untuk nama atribut, dan bahkan jika ada, komponen tidak akan diganti sebagai placeholder). Ketika placeholder tidak dapat diganti, ada dua opsi: simpan apa adanya atau melemparkan pengecualian parameter ilegal. Antarmuka spesifik adalah sebagai berikut:
Antarmuka ConfigaclePropertyRyolver:
Antarmuka ini mendefinisikan bagaimana komponen itu sendiri dikonfigurasi. Misalnya: Saya baru saja menyebutkan bahwa ketika mendapatkan nilai, Anda dapat menentukan jenis apa pun, yang tergantung pada ConversionsEver untuk konversi jenis. Antarmuka saat ini menyediakan pengaturan dan akuisisi layanan konversi. Selain itu, Anda dapat mengonfigurasi format placeholder properti, termasuk: Placeholder awalan (default adalah "$ {"), sufiks placeholder (default adalah "}"), pemisah nilai placeholder (default adalah ":", yang digunakan untuk memisahkan PropertiDyName dan defaultValue). Komponen juga dapat mengatur atribut mana yang harus ada, dan juga dapat memverifikasi apakah atribut yang harus ada benar -benar ada (jika tidak ada, pengecualian akan dilemparkan). Antarmuka spesifik adalah sebagai berikut:
AbstractPropertyRyolver Class:
Kelas Implementasi Abstrak untuk dua antarmuka di atas. Ini mengimplementasikan semua metode antarmuka yang dapat dikonfigurasiPropertyRySolver. Mengenai metode antarmuka Propertiesolver, ada 3 metode GetProperty yang perlu diimplementasikan dalam subkelas (metode kelebihan beban lainnya menyebut 3 metode ini):
String getProperty (tombol string); <T> t getProperty (tombol string, kelas <T> targetType); <T> kelas <t> getPropertyAsclass (tombol string, kelas <T> targetType);/*** Kelas saat ini juga menentukan metode abstrak tambahan untuk secara langsung mengembalikan nilai nilai yang diperoleh (tidak ada penggantian penempatan). * Metode GetProperty umum akan menggantikan placeholder dalam nilai nilai secara default dan mengembalikannya. */Protected Abstrak String getPropertyAsrawString (tombol string); Adapun untuk mengganti placeholder properti, ini dilakukan dengan bantuan dua objek asisten placeholder properti propertyplayhelper (kelas alat), salah satu dari dua objek ini adalah mode yang ketat dan yang lainnya adalah mode non-ketat.
Kelas PropertiesSourcesPropertyRySolver:
Kelas ini adalah satu -satunya kelas implementasi lengkap dalam sistem. Dibutuhkan Koleksi Sumber Properti PropertiesSources (Daftar <Pro propertySource> Daftar Sumber Properti yang dipegang secara internal) sebagai sumber nilai properti, iterasi melalui setiap Sumber Properti secara berurutan, dan kembali jika memperoleh nilai properti non-nol.