這兩張UML圖是表達我在CloudBox中針對自行開發的Dialog與iOS的UIAlertView的結合
首先我實踐了一個CBiOSDialogView類,這是一個純粹的objective-c類繼承自NSObject
其中方法有一個-(void)showDialog:(DialogType)type :(NSString*)title :(NSString*)msg
以及另一個alertViewClick的事件來接收UIAlertView的按鍵事件
裏面的代碼只是很簡單的就只是產生UIAlertView及綁定delegate
事件也只是將DialogResult及clickIndex丟出給CBDialogManager
在整體概念中,CBDialog是一個抽象類,CBSystemDialog則是一個針對系統內建AlertView(如iOS的UIAlertView或Android的AlertDialog)接口
在iOS中我實踐了CBiOSDialog類作爲針對iOS的實踐,CBiOSDialog是一個C++類,作爲一個區隔,隔開了CBSystemDialog與CBiOSDialogView
以維持在CBSystemDialog中統一爲C/C++代碼
CBDialogManager則爲一個管理類,當CBDialog的衍生類實踐showDialog方法並在其中呼叫registerDialog類
就會將該Dialog註冊至管理類中,而在CBiOSDialogView中會直接透過管理類,將系統訊息轉接拋出到相對應的Delegate中
如同下圖所示,最終Delegate的目標爲TestScene