这两张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