Closed kristiank closed 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)
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: