Vienkrāsains raksts ir viens no vienkāršākajiem dizaina modeļiem. Klasei, kas izmanto vienu noformējuma modeli, ir viens gadījums, ko tā pārvalda pati. Šī klase neļauj nevienai citai klasei izveidot tās instanci.
Viena klase nodrošina arī vienu globālu piekļuves punktu tās izveidotajai instancei. Tātad jebkurai klasei, kas vēlas atsevišķas klases gadījumu, tai ir jāpiekļūst, izmantojot savu vienoto piekļuves punktu.
Java lieliskais atbalsts objektorientētai programmēšanai ļauj ērti izmantot viena dizaina modeli.
Singleton modeļa ieviešana, izmantojot Java
Ir daudzi veidi, kā ieviest vienatēla modeli Java; dedzīgās un slinkās pieejas ir izplatītas variācijas. Katrai no šīm pieejām ir savas priekšrocības un trūkumi. Tāpēc jūsu izvēlētajai metodei ir jābūt atkarīgai no tā, kā jūsu lietojumprogramma darbosies.
Dedzīgā pieeja
Singapūras modeļa ieviešana ar dedzīgu pieeju nozīmē, ka klase, kad tā tiek ielādēta, izveido jaunu instanci.
publiskiklasēEagerSingleton{
Privātsstatisks EagerSingleton instance = jauns EagerSingleton();PrivātsEagerSingleton(){}
publiskistatisks EagerSingleton getInstance(){
atgriezties piemērs;
}
}
The EagerSingletonJava klase ielādes laikā izveido jaunu sevis gadījumu. Tas piešķir šo gadījumu privātajam statiskam instances mainīgais, kas ir pieejama tikai vienatnes klasē. Vienīgais ārējās piekļuves punkts instances mainīgajam ir caur getInstance() metodi. Šī metode atgriež iepriekš izveidoto klases gadījumu.
Šī pieeja ir lieliska, jo tā novērš daudzpavedienu problēma, kas ir viens no lielākajiem izaicinājumiem vienatnē. Tas atrisina daudzpavedienu problēmu, izveidojot jaunu instanci, pirms jebkurš jauns pavediens var piekļūt tā gadījuma mainīgajam. Tas garantē, ka katram pavedienam būs piekļuve tikai vienai un tai pašai instancei.
Tomēr dedzīga pieeja ir praktiska tikai tad, ja jūsu lietojumprogramma izmantos singleton klases gadījumu, kad tā sāk darboties. Pretējā gadījumā jūs izveidosit objektu, pirms tas būs nepieciešams jūsu lietojumprogrammai, nevajadzīgi izmantojot resursus.
Slinkā pieeja
Slinka pieeja ir dedzīgas pieejas problēmas risinājums. Tas ļauj izveidot jaunu vienas klases gadījumu tikai tad, kad programmai tas ir nepieciešams.
publiskiklasēLazySingleton{
Privātsnepastāvīgsstatisks LazySingleton instance;PrivātsLazySingleton(){}
publiskistatisks LazySingleton getInstance(){
ja (piemērs == null) {
sinhronizēts (LazySingleton.klasē) {
ja (piemērs == null) {
gadījums = jauns LazySingleton();
}
}
}
atgriezties piemērs;
}
}
Slinkā pieeja atrisina daudzpavedienu problēmu, izmantojot sinhronizēts atslēgvārds. Tas neļauj diviem pavedieniem vienlaikus piekļūt instances mainīgajam. Sinhronizācija tomēr ir dārga, tāpēc lietojumprogramma to izmanto tikai vienu reizi, kad tā pirmo reizi izsauc getInstance ().
Kad lietot Singleton modeli
Singleton modelis ir noderīgs daudzos gadījumos, lai izveidotu dialoglodziņus, apstrādātu reģistra iestatījumus vai pārvaldītu pavedienu kopas.
Vēl viena izplatīta viengabala modeļa izmantošana ir centrālās klases izveide, kas pārvalda datu bāzes savienojumus.