keeleinstituut / e-keelenou

e-keelenõu portaal
1 stars 2 forks source link

QueryManager objekt ümberkirjutada #2

Closed kristiank closed 10 years ago

kristiank commented 10 years ago

Põhiprobleem on see, et kasutatakse queryAll(). Kõigi allikate asemel tuleks kasutada QueryManageris hoitud nimekirja. Siis saaks allikate valimise (kaasamise) võimaluse add() ja remove() meetodite abil.

Võimalikud disainimustrid:

  1. QueryManager on Mediator (ehk vahetalitaja) ja allikad on kolleegid.
  2. QueryManager on Observer (ehk välisvaatleja) ja allikad on subjektid.
kristiank commented 10 years ago

Probleemiks pole niivõrd QueryManager, vaid objektid, mida see püüab talitada. Praegu peab järgima nii allika päringut, päringu vastuse töötlemist kui ka töödeldud vastuse kuvamist (vastavalt src, proc ja view).

Ettepanek: tekitada vaheobjekt, mis QueryManager'i poolt on üks (ja mitte kolm) ja teisalt koordineerib allika kõigi kolme etapi tegevusi.

Järgides Mediator mustrit oleks see siis (umbes):

QueryDirector = {
  function onQuery() {};
  function onResponse() {};
  function updateView() {};
}

QueryManager oleks endiselt üks Observer, aga lihtsamate meetoditega: .addQueryDirector(id, QueryDirector) ja .removeQueryDirector(id)