Yksityisen dataluokan purkaminen

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.

Kuvaus

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.

Toteutusesimerkkejä

Jos haluat käyttää tätä suunnittelumallia haluttuun luokkaan, sinun on:

  1. Luo uusi luokka, jolla on yksi vastuu käyttämällä refaktorointimenetelmiä: kentän erotus ja menetelmän erotus.
  2. Luo linkki vanhan ja uuden luokan välille.

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 ) { // ... } } }

Katso myös

Kirjallisuus