在我的应用程序中,我有令牌。这些标记始终包含在[]中。
令牌具有内部和外部表示,例如,变量的内部表示:[x]和外部表示:[var = x]。
我需要经常检查Strings for Tokens,所以我猜想有一种返回此String中的Tokens数组的方法会非常有用。
为此,我想到了两种方法:
我还考虑过将两种方法结合起来,以便我有一个抽象类Token,最后的TokenType字段在构造函数中设置。然后我可以使用多态来获取getInternalRepresentation()和getExternalRepresentation(),并通过TokenType字段询问令牌的类型。
哪种方法最好?还是我错过了什么?
答案 0 :(得分:0)
为避免在收集具有不同类型的元素时调用instanceof
,您可以使用访问者模式。
答案 1 :(得分:0)
您可以创建一个界面,&也可以使用工厂方法为您的令牌。
公共类TokenFactory {
public IToken getToken(String type) {
IToken token = null;
if (type.equals("internal")) {
token = new InternalToken();
}
if (type.equals("external")) {
token = new ExternalToken();
}
return token;
}
}
public interface IToken {
public void getTokenReprestation(); // your method & return type what u want
}
public class InternalToken实现了IToken {
/* (non-Javadoc)
* @see com.example.IToken#getTokenReprestation()
*/
@Override
public void getTokenReprestation() {
// TODO Auto-generated method stub
System.out.println("this is Internal Token Type Object");
}
}
公共类ExternalToken实现了IToken {
/* (non-Javadoc)
* @see com.example.IToken#getTokenReprestation()
*/
@Override
public void getTokenReprestation() {
// TODO Auto-generated method stub
System.out.println("this is External Token Type Object");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TokenFactory tokenFactory = new TokenFactory();
IToken token = tokenFactory.getToken("internal");
token.getTokenReprestation();
IToken token = tokenFactory.getToken("external");
token.getTokenReprestation();
}
//只是一个演示示例供您理解。希望它会对你有所帮助。谢谢:))