锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
涓涓璞$殑琛屼負鍙栧喅浜庝粬鐨勭姸鎬侊紝鑰屼笖瀹冨繀欏誨湪榪愯鏃舵牴鎹姸鎬佹敼鍙樹粬鐨勮涓恒傚父瑙勫疄鐜頒腑錛屼竴涓搷浣滃惈鏈夊簽澶х殑澶氬垎鏀殑鏉′歡璇彞錛屼笖榪欎簺鍒嗘敮渚濊禆浜庤瀵硅薄鐨勭姸鎬併傝繖涓姸鎬侀氬父浣跨敤涓涓垨鑰呭涓灇涓懼父閲忚〃紺恒係Tate妯″紡鎶婅繖浜涚姸鎬佹椂鍊欑殑瀵硅薄鐪嬪仛涓涓嫭绔嬬殑瀵硅薄錛屼篃灝辨槸灝嗕笉鍚岀姸鎬佹椂鐨勮涓哄垎鏁e埌鐩稿簲鐨勭姸鎬佺被涓傝杈懼埌榪欐牱鐨勬晥鏋滐紝闇瑕乧ontext錛屼篃灝辨槸鐘舵佺殑鎸佹湁鑰咃紝鍗沖師鍏堢殑綾伙紱鎶借薄鐘舵佺被錛屼粬灝佽浜嗕笌context浜や簰鐨勬帴鍙o紱鍏蜂綋鐘舵佺被錛屼篃灝辨槸涓涓釜鐨勫叿浣撶姸鎬併俢ontext涓繚瀛樹竴涓娊璞$姸鎬佺被瀵硅薄涓烘垚鍛橈紝騫禿elegate瀵硅薄琛屼負緇欎粬錛屼粠鑰屼嬌鐩稿簲鐘舵佷笅鐨勮涓轟唬鐮佺敓鏁堛傚鏋滅姸鎬佹敼鍙樼殑鍑嗗垯涓嶆槸鍥哄畾鐨勫垯state鐘舵佺被鍚屾椂搴旇閲嶅啓changestate綾諱互鎺у埗鐘舵佺殑鏀瑰彉錛屽惁鍒欏彲浠ュ湪context涓疄鐜般?/font>
鍏蜂綋鍒版垜浠殑欏圭洰錛?/font>
姣忎竴涓猟evice鍗充負context錛屼粬鎷ユ湁涓涓猻tate瀵硅薄錛宒evice涓殑鍑芥暟processMsg(){state->processMSg();} 鐢變簬鐘舵佹敼鍙樼殑瑙勫垯渚濊禆浜庢敹鍒扮殑娑堟伅錛屼篃灝辨槸璇翠竴涓姸鎬佸彲鑳借漿鎹㈠埌澶氫釜鐘舵乨evice鐨勬瘡涓姸鎬侀渶瑕侀噸鍐檚tatechange鏂規硶錛宻tateChange(){state->stateChange(this錛宮sg);} 榪欐牱錛屼笉鍚岀殑鐘舵佷笅鐨勮涓哄疄鐜板湪鍏蜂綋鐘舵佺殑綾諱腑錛屾瘮鍘熷厛鐨勭増鏈竻鏅版槑浜嗭紝鍙鎬ф洿寮恒?/font>