Mistä suunnittelumallista tässä on kyse?

Olkoon luokka Auto vaikka seuraavanlainen:

class Auto
{
String merkki;
String rekkari;
int bensaa;
Rekisteriote rekisteriote;
...
}

Mutta jos halutaankin toteuttaa luokka Auto niin, että sen sijaan että määritellään jokainen jäsenmuuttuja luokan sisälle, tehdäänkin esim näin

class Auto
{
Hashmap arvot;
}

Eli nyt Autoon voi lisätä mielivaltaisesti erilaisia "muuttujia" lisäämällä tuohon hashmappiin eri avaimia arvoineen.

Auto auto = new Auto();
auto.arvot.add("merkki", "bmw");
auto.arvot.add("rekkari", "AAA-123");
...

Mistä suunnittelumallista tässä on oikein kyse? Toivottavasti joku ymmärsi...
4271
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

Hieman jäi vaivaamaan tuo, mitä hait maininnalla mielivaltaisesta lisäämisestä... Eli liittyikö se varsinaiseen kysymykseen...

Äänestä

hashmap (tiedontalletusrakenne joka on verrannollinen linkitettyyn listaan, binary tree ym). Katso vaikka wikipediasta yksityiskohtia.

Hashmapin idea on että sillä voi nopeasti etsiä suuresta taulukosta (ominaisuus, arvo) jakamalla aineiston osioiksi jonkun kriterin mukaan. Muodostetaan hashkoodi jonka avulla voidaan "suoraan" hypätä taulukon oikeaan kohtaan. Tavallisesti suuret tietokannat (>10000 arvoa) käyttävät yhdistelmää hashmap- binary tree. Pienillä tietomäärillä suora haku taulukosta (tai linkitetystä listasta) on nopeampi ja selkeämpi.

En itse puhuisi mistään "suunnittelumallista". Kyseesssä on tavanomainen tiedontalletusrakenne, ei mitään muuta.

Äänestä

Extensibility pattern? Sillä voi helposti laajentaa sitä tiedon määrää siellä luokan sisällä myöhemmin keksimällä lisää kenttiä.

Onko pattern ollenkaan? Tarvitaanko tuota tai onko tuo hyvä idea? En minä vaan tiedä.

Itse asiassa joissakin dynaamisissa kielissä oliot on jo toteutettu oletuksellisti tuota muistuttavalla tavalla...

Äänestä

Kommentoi aloitusta


design pattern kirjoitti:

Olkoon luokka Auto vaikka seuraavanlainen:

class Auto
{
String merkki;
String rekkari;
int bensaa;
Rekisteriote rekisteriote;
...
}

Mutta jos halutaankin toteuttaa luokka Auto niin, että sen sijaan että määritellään jokainen jäsenmuuttuja luokan sisälle, tehdäänkin esim näin

class Auto
{
Hashmap arvot;
}

Eli nyt Autoon voi lisätä mielivaltaisesti erilaisia "muuttujia" lisäämällä tuohon hashmappiin eri avaimia arvoineen.

Auto auto = new Auto();
auto.arvot.add("merkki", "bmw");
auto.arvot.add("rekkari", "AAA-123");
...

Mistä suunnittelumallista tässä on oikein kyse? Toivottavasti joku ymmärsi...

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu