![](/img/trans.png)
[英]Java: Creating an empty interface to access different classes from one attribute?
[英]Java interface access different classes by calling same interface
我想以某种方式使用Java接口,以便在其他类(例如“ private SoapURL soapURL;”)中进行调用定义接口 然后我可以访问任何类的方法,例如:我想使用login:-
private SoapURL soapURL;
SoapUrl = LoginSoap ();
String nameSpace = soapURL.getMethodName();
String url = soapURL.getUrl();
有什么办法可以做这样的事情。 对不起,我对面向对象的原则不太满意,但是如果我的问题有解决方案,我想知道。 提前致谢。
public interface SoapURL {
public String getNameSpace();
public String getUrl();
public String getSoapAction();
public String getMethodName();
public String getTag();
}
LoginSoap类
public class LoginSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserControl";
}
@Override
public String getMethodName() {
return "UserControl";
}
@Override
public String getTag() {
return "Login Activity";
}
}
SignSoap类
public class SignUpSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserRegister";
}
@Override
public String getMethodName() {
return "UserRegister";
}
@Override
public String getTag() {
return "SignUp Activity";
}
}
ResetPasswordSoap类
public class ResetPasswordSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserPasswordReset";
}
@Override
public String getMethodName() {
return "UserPasswordReset";
}
@Override
public String getTag() {
return "Forget Password Activity";
}
}
只是这样做,例如:
SoapURL example = new LoginSoap();
String a = example.getTag();
a
应该等于"Login Activity"
您的实现看起来正确。 要使用它,可以在main中执行以下操作:
SoapURL reset = new ResetPasswordSoap();
System.out.println(reset.getUrl());
这是在大型系统中使耦合最小化的方法。 通过为共同工作的对象组使用通用接口来减少对象之间的依赖性。 您可能是面向对象原理的新手,但您已经领先了游戏一步
要将其传递给函数,请执行以下操作:
public JPanel resetPass(SoapURL reset) {
...
}
// In main:
JPanel resetPassPanel = resetPass(reset);
Interface的主要用途是多态性 ,或者对多个不同对象执行相同操作的能力,这正是您所需要的方案
您的方法绝对不错,只需进行修改
private SoapURL soapURL;
//SoapUrl = LoginSoap (); // This line should be replaced with the Below line
soapURL=new LoginSoap();
String nameSpace = soapURL.getMethodName();
String url = soapURL.getUrl();
由于LoginSoap
, SignUpSoap
, ResetPasswordSoap
类是SoapURL Interface
实现类,因此SoapURL的引用变量可以存储任何这些子类的Object
soapURL=new LoginSoap();//soapURL.someMethod will call method of LoginSoapClass
soapURL=new SignUpSoap();// will call method of SignUpSoap class
soapURL=new ResetPasswordSoap();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.