使用Abstract factory pattern。
您的抽象工廠將允許您創建對話框和其他通知。然後你將有2個具體的實現來創建Android版本或通知的JVM版本。
例子:
/*
* The abstract factory
*/
public abstract class NotificationFactory {
/**
* Pops a message up for the user.
*
* @param msg
*/
public abstract void newToast(String msg);
// other notifications can go here
}
/**
* Concrete Android notification factory
*
*/
public final class AndroidNotificationFactory extends NotificationFactory {
private final Context context;
public AndroidNotificationFactory(Context context) {
this.context = context;
}
@Override
public void newToast(String msg) {
// normal Android toast stuff using the context
}
}
/**
* Concrete JVM Notification factory
*
*/
public final class JvmNotificationFactory extends NotificationFactory {
@Override
public void newToast(String msg) {
// JVM toast stuff
}
}
/**
* A singleton used for accessing the factory.
*
*/
public enum Library {
Instance;
private NotificationFactory notificationFactory;
public NotificationFactory getNotificationFactory() {
// nb: add synchronized if needed
return notificationFactory;
}
public void setNotificationFactory(NotificationFactory notificationFactory) {
// nb: add synchronized if needed
this.notificationFactory = notificationFactory;
}
public void InitForAndroid(Context context) {
setNotificationFactory(new AndroidNotificationFactory(context));
}
public void InitForJvm() {
setNotificationFactory(new JvmNotificationFactory());
}
}
public class ExampleUsage {
/**
* @param args
*/
public static void main(String[] args) {
// init the library
// Library.Instance.InitForAndroid(context); //or:
Library.Instance.InitForJvm();
// usage
Library.Instance.getNotificationFactory().newToast("Test");
}
}
有了,你需要能夠呼籲創建後方法對話框,你需要做的IDialog
接口和實現接口的具體Android和JVM包裝。
如果沒有上下文,你什麼都不能做。可能會提供通知界面並讓用戶實現此界面 –