Yksityisen dataluokan purkaminen | |
---|---|
Kuvattu suunnittelukuvioissa | Ei |
Yksityisen tietoluokan korostaminen (eng. Private class data ) on rakenteellinen suunnittelumalli, jota käytetään attribuuttien piilottamiseen ja käsittelemiseen.
Yleensä luokat näyttävät aluksi aina selkeiltä ja ymmärrettäviltä. He tekevät työnsä eivätkä kiipeä muiden luokkien velvollisuuksiin. Ohjelmaa kehitettäessä kuitenkin lisätään uutta logiikkaa. Tämän seurauksena jotkut luokat saavat vahingossa paljon lisävastuita. Yksityinen refaktorointimenetelmä tulee apuun , joka tunnetaan nimellä "Extract Class". Sen avulla voit noudattaa " yhden vastuun periaatetta ", mikä tekee luokista luotettavampia ja kestävämpiä muutoksia vastaan.
Jos haluat käyttää tätä suunnittelumallia haluttuun luokkaan, sinun on:
Muutoksia kannattaa tehdä pikkuhiljaa ja testata tulos jokaisen siirron jälkeen, sillä näin vältytään korjaamasta suuria virheitä aivan lopussa. Lopulta uudet luokat uudelleen tarkasteltuaan palaa vanhaan luokkaan, ehkä sen vastuu on muuttunut ja nyt on järkevää kutsua sitä toisin.
Toteutusesimerkki C# :ssa nimiavaruus Yksityinen_luokkatiedot { luokka Ohjelma { staattinen void Main ( merkkijono [] args ) { var radius = new double (); var color = uusi väri (); var origin = uusiPiste ( ); var circle_before = uusi ennen . Ympyrä ( säde , väri , alkuperä ); var circle_after = uusi jälkeen . Ympyrä ( säde , väri , alkuperä ); } } luokan väri { } luokan grafiikka { } luokkapiste { } _ } nimiavaruus Yksityinen_luokka_tiedot.ennen { luokka Ympyrä { yksityinen kaksinkertainen säde ; yksityinen Väri väri ; yksityinen pisteen alkuperä ; julkinen Ympyrä ( kaksoissäde , väriväri , pisteen lähtökohta ) { tämä . _ _ säde = säde ; tämä . väri = väri ; tämä . alkuperä = alkuperä ; } public double Ympärysmitta { get { return 2 * Math . PI * tämä . säde ; } } public double Halkaisija { get { return 2 * this . säde ; } } public void Draw ( Grafiikkagrafiikka ) { // ... } } } nimiavaruus Private_class_data.after { class CircleData { yksityinen kaksinkertainen säde ; yksityinen Väri väri ; yksityinen pisteen alkuperä ; public CircleData ( kaksinkertainen säde , värin väri , pisteen lähtökohta ) { this . säde = säde ; tämä . väri = väri ; tämä . alkuperä = alkuperä ; } public double Säde { get { return this . säde ; } } public Color Color { get { return this . väri ; } } julkinen pistealkuperä { get { palauta tämä . _ alkuperä ; } } } class Circle { yksityinen CircleData circleData ; public Ympyrä ( kaksinkertainen säde , värin väri , pisteen lähtökohta ) { circleData = new CircleData ( säde , väri , lähtökohta ); } public double Ympärysmitta { get { return 2 * Math . PI * tämä . circleData . Säde ; } } public double Halkaisija { get { return 2 * this . circleData . Säde ; } } public void Draw ( Grafiikkagrafiikka ) { // ... } } }Suunnittelumalleja | |
---|---|
Main | |
Generatiivinen | |
Rakenteellinen | |
Käyttäytyminen | |
Rinnakkaisohjelmointi _ |
|
arkkitehtoninen |
|
Java EE -mallit | |
Muut mallit | |
Kirjat | |
Persoonallisuudet |