我有一个非常基本的问题,更多的是设计问题。下面列出的是用户是抽象类的类。只有 PremiumUser 和 AdminUser 可以发布消息,而 GuestUser 无法发布消息(因此没有 postingMessages; 属性在 GuestUser 类中。
问题: 我有一个主要类,我称之为 postMessage();方法但在调用此方法之前,我使用另一种方法(其返回类型为用户)获取用户对象。因此,要调用 postMessage()方法,我必须将用户对象强制转换为 AdminUser 或 PremiumUser 对象。我认为有三种方法可以做到这一点:
我想知道我的设计是否在某种程度上存在缺陷,或者这是一个常见的问题,并且有一个更智能的解决方案。
答案 0 :(得分:1)
为了安全施展你基本上使用类似的东西:
PremiumUser.class.isAssignableFrom(object);
也适用于从PremiumUser继承的对象(例如)。有多种选择可以避免这种检查,但这完全是设计问题。一些例子:
答案 1 :(得分:1)
使用其中包含postMessage
方法的界面:
interface HasPostMessage {
boolean postMessage(String message);
}
让PremiumUser
和AdminUser
实现它。然后:
if (user instanceOf HasPostMessage) {
((HasPostMessage) user).postMessage("The message");
}