You are on page 1of 9

Posted on Thng Hai 23, 2013by haihth

CHNG 9: KIM SOT I TNG CA BN VI MU TRNG THI STATE V MU I DIN PROXY Trong chng ny: S dng mu State Cho php trng thi xc nh kt qu Hiu v mu Proxy S dng proxy i din cho i tng ca bn Kt ni vi cc proxy thng qua internet

Gim c iu hnh ca cng ty Apartments-N-Stuff Inc ng k dch v t vn ca bn v ni Chng ti ang hot ng cho thu cn h phc hp tri rng khp t nc. Vn ln nht ca chng ti l qun l ti sn, chi ph cho vic ny rt ln. V th chng ti ang chuyn i tt c cn h phc hp ca chng ti sang vic s dng cc robot phn phi t ng, n s chp nhn cc n thu nh v phn phi cha kha cho khch hng. Chng ti mun nhng ngi thu nh mi s c th np n cho h thng t ng ny, v khi h thng chp nhn, h s nhn c cha kha nh t h thng. Nghe tht tuyt, bn ni tng chnh l, v gim c ni tip Bnh thng, h thng t ng ny c t xung quanh cc ta nh v ch i cc khch hng tim nng. Khi mt ngi thu nh np n, my t ng ny s kim tra n. Nu n c chp thun, my t ng s phn phi cha kha cho ngi thu nh, ngc li h thng s thng bo t chi ngi thu nh v tr v trng thi ch i. V nu mt h thng t ng cho thu mt cn h, n cng phi kim tra bit chc rng cn trng cn h no trong dy nh phc hp khng, v s khng cho thu na nu ht cn h. V gim c iu hnh nhn bn ang v nguch ngoc v cui cng hi: Anh ang lm g ? Ti ang v mt biu trng thi, bn ni. Ti c th xem n khng?, V gim c hi

Khng, bn ni ng cn bit thm nhiu kin thc hiu biu ny Oh, V gim c ni Chng ny ni v hai mu thit k: mu trng thi State, ni m mt i tng lu tr thng tin v cc trng thi ni ti ca n, v c th thay i hnh vi cho thch hp vi trng thi , v mu i din Proxy, ni m mt i tng c th hnh ng nh mt s thay th cho i tng khc. Bn s thy chi tit cch hai mu lm vic trong chng ny. Ghi nhn tnh trng ca bn vi mu State Bn hiu nhng g v gim c ni. H thng t ng cho thu s c 4 trng thi sau:

l: ch mt ngi thu nh mi, nhn mt n thu nh, cho thu mt cn h, ht cn h cho thu. Hnh sau cho bn thy biu trng thi, ni m tng hp ch nht i din cho mt trng thi, v bn c th kt ni cc trng thi li vi nhau bit cch lm vic ca mt my t ng cho thu nh

Bn t ngh trong lng, y ng l ch p dng mu trng thi State. Thnh thong, khi bn tham gia vo mt d n ln, m ngun thng bt u rt ti tm. C qu nhiu iu kin c th xy ra m bn phi nm bt v rt kh bit u l cc ranh gii cng nh lm sao chia nh m ngun ra. Gi : Khi bn gp phi mt ng dng ln v m ngun khng kim sot ni, n thng gip cho bn bt u suy ngh ti khi nim v cc trng thi khc nhau. y l cng c gip bn chia nh m ngun ra thnh tng n v nh hn, l tng nht l tng trng thi ny phi c lp vi nhau, v t ng chia nh m ngun bn ra thnh tng phn ri rc. Ghi nh: Sch ca Gang o Four (GoF), ni rng mu thit k State s Cho php mt i tng thay i hnh vi khi trng thi ca chnh n thay i. i tng s xut hin thay i lp ca n. Ni cch khc, m ngun ca bn theo di cc trng thi ni ti, v d nh trng thi ch mt ngi thu nh mi Waiting for a new tenant. Phn khc ca m ngun s kim tra trng thi hin ti l g v s phn ng ph hp. V d, nu trng thi ca h thng l ht cn h cho thu Fully rented, v mt khch hng tim nng mi ti thu nh, khi a vo n thu nh, lp tc h thng s t chi n .

Khi bn s dng mu thit k State, mt phn m ngun c th kim tra trng thi hin ti l g. iu ny gip bn lm vic vi m ngun ln mt cch r rng v tp trung hn bi v bn phi kim sot hot ng ca tng on m ri rc, ch bng cc cch thay i trng thi hin ti. Ni chung, mu thit k State rt hu ch khi bn c nhiu m ngun m ngy cng phc tp v ri rm. Nu bn c th chia nh cng vic bng cch a chng vo cc trng thi c lp vi nhau, bn lm cng vic ca mnh d dng hn rt nhiu. S dng hm lu tr trng thi V d u tin, bn c gng to mt my t ng n gin, s dng trng thi. Bn quyt nh rng bn c th vit ng dng tp trung vo mt tp hp cc hm, cc hm ny c th hot ng da trn trng thi hin ti ca h thng. Bn bt u bng cch to tng hng s trng thi cho bn trng thi ca h thng. M ngun nh sau:

By gi bt c m ngun no trong ng dng cng c th kim tra tnh trng hin ti v p ng thch hp. V d m ngun sau ch ra cch thc hm getApplication lm vic, hm c gi khi h thng nhn mt n thu nh ca khch hng ch rng vic h thng x l s ph thuc vo trng thi ni ti:

Vy nu h thng nhn c n thu nh v n ang trng thi FULLY_RENTED, h thng s in ra thng bo xin li, chng ti cho thu ht cn h. Sorry, were fully rented. Nu h thng nhn mt n thu nh v trng thi ca n l WAITTING, n s thng bo Thanks for the application. V thay i h thng t thay i trng thi sang GOT_APPLICATION.

Tng t vy, nu bn gi hm checkApplication ca h thng, vic p tr s ty thuc vo tnh trng hin ti: V d, nu h thng c yu cu kim tra mt n thu nh, v n ang tnh trng WAITING, n s bo vi khch hng l h cn phi np n thu nh trc. Nu h thng ang tnh trng GOT_APPLICATION khi bn gi hm checkApplication, n s kim tra n thu nh v quyt nh chp nhn hay t chi khch hng ny. Quy trnh c m phng trong v d ny vi mt s ngu nhin nu n c chp nhn, chng trnh s a h thng v trng thi cn h cho thu APARMENT_RENTED v gi hm tn rentApartment; nu n b t chi, chng trnh s a h thng v trng thi ch WAITING.

Hm rentApartment cng kim tra trng thi ni ti ca h thng nu trng thi l APARTMENT_RENTED, n s gim s lng cn h xung 1 n v, v gi hm phn phi cha kha nh, hm dispenseKeys.

Cui cng, hm dispenseKeys cng kim tra trng thi hin ti v nu trng thi l APARTMENT_RENTED, hm s gi cha kha nh ti ngi thu nh v a h thng v trng thi ch WAITING tip tc ch ngi thu nh k tip.

tng chnh l nh vy bn lu tr trng thi ni ti v mi khi m ngun bn ngoi gi cc hm trong chng trnh, bn c th kim tra trng thi hin ti thc hin

cng vic thch hp. y l chng trnh th nghim. Trong chng trnh ny bn to mi mt i tng RentalMethods, a vo hm khi to mt s 9, ni rng c 9 cn h c th cho thu. Sau chng trnh gi hm getApplication v checkApplication m phng c mt ngi thu nh mi.

V y l kt qu

Khng t, bn to ra mt h thng t ng tip nhn v gii quyt cc yu cu thu nh cho khch hng. Nhng c mt rc ri vi phng php da trn cc hm. l khi bn thm nhiu trng thi na, tng hm s tr nn di v di hn, v mi hm phi vit li cho tt c trng thi mi. Bn s lm g? Hy ng gi chng. S dng i tng ng gi trng thi Thay v lu tr tng trng thi trong cc hng s, c mt tng tt hn l a chng vo trong cc lp. Vi cch ny, bn c th gi hm dispensKeys hoc checkApplication

trn i tng trng thi state bt c u trong m ngun. Tt c nhng g bn phi lm l np ng i tng trng thi state vo mt bin, v gi cc hm khc nhau trn bin . V d nu i tng state hin ti tng ng vi trng thi ch i, bn s nhn c mt tr li khc khi bn gi hm gotApplication hn l nu i tng hin ti tng ng vi trng thi cho thu ht, khi m khng cn cn h no na. Bn quyt nh lu gi trng thi hin ti trong mt i tng lm m ngun r rng hn. Lm sao thit k mt h thng t ng s dng mt i tng trng thi state? H thng ny lu tr trng thi hin ti trong mt i tng state, i tng ny c th lu tr mt trong bn i tng trng thi c th sau : WaitingState, GotApplicationState, ApartmentRentedState v FullyRentedState. Xem hnh sau:

You might also like