来自多个接口的公共方法实现

Common methods implementation from multiple Interfaces

我正在自己练习一些项目实现。请帮我解决以下问题: 我有 3 个接口,其中 AccountModificationAPI 是父接口,LibrarianAccountModificationAPIMemberAccountModificationAPI 从该接口扩展。我在两个子接口中对 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.

现在,LibrarianAccountModificationAPIMemberAccountModificationAPI 的所有实现都扩展了 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.