2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Kun sovelluksen on ohjattava resurssien jakamista, suoritettava konfiguraatioiden hallintaa ja lokin tallennustoimintoja, yleinen vaatimus on käyttää yleistä tukiasemaa, jotta ohjelma voi käyttää sitä tämän yleisen tukiaseman kautta riippumatta siitä, missä se on asiaankuuluvat tapaustiedot. Tämän tarpeen täyttämiseksi voimme käyttää Singleton Pattern -mallia. Yksittäinen malli varmistaa, että luokassa on vain yksi ilmentymä, ja tarjoaa maailmanlaajuisen yhteyspisteen kyseisen ilmentymän käyttämiseksi.
Erityisesti singleton-malli tarjoaa yleensä staattisen menetelmän (kuten getInstance()), joka palauttaa luokan ainoan esiintymän. Koska tämä menetelmä on staattinen, sitä voidaan kutsua luomatta luokan esiintymää. Tämä tarkoittaa, että mikä tahansa koodi, jolla on pääsy luokkaan, voi saada yksittäistapauksen kutsumalla tätä staattista menetelmää.
Tässä artikkelissa esitellään yksityiskohtaisesti singleton-mallin peruskäsitteet ja toteutusvaiheet. Tämän artikkelin avulla voit ymmärtää, kuinka singleton-kuvio toimii, ja oppia käyttämään sitä tehokkaasti todellisissa projekteissa.
Mielenkiintoisen esimerkin vuoksi singleton-malli on kuin päähenkilön sädekehä animemaailmassa riippumatta siitä, miten juoni kehittyy, päähenkilöitä on aina vain yksi, ja kaikki tietävät, että hän on tarinan ydin. Näin tarinan etenemisestä riippumatta jokainen voi löytää saman henkilön viemään juonen eteenpäin.
etu
Varmista yksittäinen esiintymä: Vältä kaksoiskappaleiden luomista ja säästä resursseja.
globaali tukiasema: Kätevä maailmanlaajuinen pääsy ja yksinkertaistettu puhelu.
Laiska alustus: Luo ilmentymiä pyynnöstä parantaaksesi suorituskykyä.
puute
Vaikea skaalata: Singleton-luokkia on usein vaikea laajentaa, koska rakentaja on yksityinen.
mahdollisia suorituskykyongelmia: Korkean samanaikaisuuden ympäristössä joissakin toteutuksissa voi olla suorituskykyongelmia.
Vaikeus testauksessa: Yksittäinen malli voi tehdä testaamisesta vaikeaa, koska se on globaali tila.
Singleton-kuvion ominaisuuksien mukaan sen käyttöskenaariot voidaan jakaa seuraaviin luokkiin:
Yksittäisen kuvion toteutus sisältää yleensä kolme elementtiä:
- yksityinen rakentaja, tee luokan rakentajasta yksityinen, jotta ulkopuolinen ei voi luoda ilmentymää uudella avainsanalla.
- Yksityiset staattiset viitepisteet omaan ilmentymään, luo staattinen ilmentymämuuttuja luokan sisällä tallentaaksesi yksilöllisen ilmentymän.
- Julkiset staattiset menetelmät, jotka palauttavat oman ilmentymän, tarjoavat staattisen menetelmän, jotta ulkomaailma voi saada ainoan esiintymän tällä menetelmällä.
Hungry-tyylisessä singleton-tilassa singleton-ilmentymä muodostetaan, kun luokka ladataan, mikä on säikeen turvallista, koska luokkaa ladattaessa on luotu staattinen objekti ja vastenopeus on nopea kutsuttaessa. Haittapuoli on myös ilmeinen. Resurssitehokkuus ei ole korkea Niin kauan kuin luokan muita staattisia menetelmiä suoritetaan tai luokka on ladattu, tämä esiintymä alustetaan.
/**
* 饿汉单例模式:在还没有实例化的时候就初始化
*/
public class Hungry {
//1. 开始时就创建实例
private static final Hungry instance=new Hungry();
// 2. 私有化的构造方法
private void hungry() {
}
public static Hungry getInstance() {
// 返回单例名
return instance;
}
}