来自多个接口的公共方法实现
Common methods implementation from multiple Interfaces
我正在自己练习一些项目实现。请帮我解决以下问题:
我有 3 个接口,其中 AccountModificationAPI
是父接口,LibrarianAccountModificationAPI
、MemberAccountModificationAPI
从该接口扩展。我在两个子接口中对 AccountModificationAPI
中的所有常用方法都有一个通用实现。如何为两个子接口提供通用实现?
我尝试添加一个抽象 class 但它要求实现以下两个接口。请推荐
public interface AccountModificationAPI {
int createAccount(Account account);
Account viewAccount(String id);
String resetPassword(String id, String password);
String updateName(String name);
String updatePhone(String phoneNumber);
String updateAddress(Address address);
String closeAccount(String accountName);
}
public interface LibrarianAccountModificationAPI extends AccountModificationAPI {
String resetMemberPassword(String accountName);
Account registerMemberAccount(Account account);
String deleteMemberAccount(String accountName);
String updateMemberAccountStatus(String accountName);
String blockMember(String accountName);
}
public interface MemberAccountModificationAPI extends AccountModificationAPI {
void extendAccountValidity();
}
public abstract class AccountModificationImpl implements LibrarianAccountModificationAPI, MemberAccountModificationAPI{
@Override
public String resetPassword(String id, String password) {
// TODO Auto-generated method stub
return null;
}
@Override
public String updateName(String name) {
// TODO Auto-generated method stub
return null;
}
@Override
public String updatePhone(String phoneNumber) {
// TODO Auto-generated method stub
return null;
}
@Override
public String updateAddress(Address address) {
// TODO Auto-generated method stub
return null;
}
@Override
public String closeAccount(String accountName) {
// TODO Auto-generated method stub
return null;
}
@Override
public int createAccount(Account account) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Account viewAccount(String id) {
// TODO Auto-generated method stub
return null;
}
}
您可以在 AccountModificationImpl
中提供 AccountModificationAPI
方法的实现。让我们将此 class 重命名为 AbstractAccountModificationAPI
.
现在,LibrarianAccountModificationAPI
和 MemberAccountModificationAPI
的所有实现都扩展了 AbstractAccountModificationAPI
.
这必须由实施者的选择来完成,不能强加。换句话说,我可以在不继承 AbstractAccountModificationAPI
.
的情况下创建一个实现
您也可以在 JDK collection 库中看到它。一个List
(接口)是一个Collection
(接口),还有AbstractCollection
抽象class。它的 javadoc 说
This class provides a skeletal implementation of the Collection interface, to minimize the effort required to implement this interface.
类似地,AbstractList
(扩展AbstractCollection
)提供了 List 接口的框架实现。
具体 class、ArrayList
扩展 AbstractList
。
另一方面,你必须意识到这里继承的缺点。这些实现不能扩展任何其他 class.
我正在自己练习一些项目实现。请帮我解决以下问题:
我有 3 个接口,其中 AccountModificationAPI
是父接口,LibrarianAccountModificationAPI
、MemberAccountModificationAPI
从该接口扩展。我在两个子接口中对 AccountModificationAPI
中的所有常用方法都有一个通用实现。如何为两个子接口提供通用实现?
我尝试添加一个抽象 class 但它要求实现以下两个接口。请推荐
public interface AccountModificationAPI {
int createAccount(Account account);
Account viewAccount(String id);
String resetPassword(String id, String password);
String updateName(String name);
String updatePhone(String phoneNumber);
String updateAddress(Address address);
String closeAccount(String accountName);
}
public interface LibrarianAccountModificationAPI extends AccountModificationAPI {
String resetMemberPassword(String accountName);
Account registerMemberAccount(Account account);
String deleteMemberAccount(String accountName);
String updateMemberAccountStatus(String accountName);
String blockMember(String accountName);
}
public interface MemberAccountModificationAPI extends AccountModificationAPI {
void extendAccountValidity();
}
public abstract class AccountModificationImpl implements LibrarianAccountModificationAPI, MemberAccountModificationAPI{
@Override
public String resetPassword(String id, String password) {
// TODO Auto-generated method stub
return null;
}
@Override
public String updateName(String name) {
// TODO Auto-generated method stub
return null;
}
@Override
public String updatePhone(String phoneNumber) {
// TODO Auto-generated method stub
return null;
}
@Override
public String updateAddress(Address address) {
// TODO Auto-generated method stub
return null;
}
@Override
public String closeAccount(String accountName) {
// TODO Auto-generated method stub
return null;
}
@Override
public int createAccount(Account account) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Account viewAccount(String id) {
// TODO Auto-generated method stub
return null;
}
}
您可以在 AccountModificationImpl
中提供 AccountModificationAPI
方法的实现。让我们将此 class 重命名为 AbstractAccountModificationAPI
.
现在,LibrarianAccountModificationAPI
和 MemberAccountModificationAPI
的所有实现都扩展了 AbstractAccountModificationAPI
.
这必须由实施者的选择来完成,不能强加。换句话说,我可以在不继承 AbstractAccountModificationAPI
.
您也可以在 JDK collection 库中看到它。一个List
(接口)是一个Collection
(接口),还有AbstractCollection
抽象class。它的 javadoc 说
This class provides a skeletal implementation of the Collection interface, to minimize the effort required to implement this interface.
类似地,AbstractList
(扩展AbstractCollection
)提供了 List 接口的框架实现。
具体 class、ArrayList
扩展 AbstractList
。
另一方面,你必须意识到这里继承的缺点。这些实现不能扩展任何其他 class.