[英]Is empty implementation of abstract methods a good approach?
我正在为我的Android应用程序使用两种不同的Google Analytics服务(Google Analytics和Mixpanel)。
我创建了一个抽象基类,如下所示:
public abstract class AnalyticsService {
public abstract void trackAppOpen();
public abstract void identifyUserOnLogin();
}
然后我创建了从AnalyticsService基类扩展的具体子类。
public class MPAnalytics extends AnalyticsService {
@Override
public void trackAppOpen() {
//Send event to MixPanel
}
@Override
public void identifyUserOnLogin() {
//Identify user with MixPanel
}
}
public class GoogleAnalytics extends AnalyticsService {
@Override
public void trackAppOpen() {
//Send event to Google
}
@Override
public void identifyUserOnLogin() {
//Do nothing
}
}
现在,Google Analytics实际上并不支持用户识别,因此我必须创建registerUserOnLogin()
方法的空实现。
我觉得这可能不是正确的方法,因为用户识别不是Google Analytics的行为,因此理想情况下它不应该是基础AnalyticsService
类的一部分,而应该在MPAnalytics
类中定义。
但是这种方法的问题在于客户端,我希望能够通过使用基本的AnalyticsService
类来引用所有不同的分析服务,而不用担心具体的实现。
List<AnalyticsService> analyticsServices;
for (AnalyticsService service : analyticsServices) {
service.trackAppOpen();
service.identifyUserOnLogin(); // where should this method be?
}
有一个更好的方法吗? 谢谢。
如果你可以使用界面,那就去做吧。
为什么 - >以防你以后继续继承母班。
不要忘记你只能继承一次
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.