Java接口设计与调用示例

在Java编程中,接口是一种重要的构造,它允许我们定义一组方法,而不需要提供具体实现。其他类可以实现这些接口,从而确保它们遵循预定义的行为。本文将通过一个具体的例子来展示如何编写一个接口并供其他类调用。

具体问题描述

假设我们要开发一个远程旅行服务的系统,用户可以通过该系统查询和预订旅行路线。为了实现这一目标,我们将定义一个接口 TravelService,该接口提供查询旅行路线的方法。接下来,我们将实现这个接口,创建一个具体的旅行服务。

接口定义

首先,我们定义一个TravelService接口,包含查询和预订旅行路线的两个方法:searchRoutesbookRoute

public interface TravelService {
    List<String> searchRoutes(String destination);
    boolean bookRoute(String route);
}

接口实现

接下来,创建一个实现该接口的类TravelServiceImpl。在此类中,我们提供了这两个方法的具体实现。

import java.util.ArrayList;
import java.util.List;

public class TravelServiceImpl implements TravelService {
    
    private final List<String> availableRoutes = new ArrayList<>();
    
    public TravelServiceImpl() {
        // 模拟一些可用的旅行路线
        availableRoutes.add("北京 - 上海");
        availableRoutes.add("上海 - 广州");
        availableRoutes.add("广州 - 香港");
    }

    @Override
    public List<String> searchRoutes(String destination) {
        List<String> routes = new ArrayList<>();
        for (String route : availableRoutes) {
            if (route.contains(destination)) {
                routes.add(route);
            }
        }
        return routes;
    }

    @Override
    public boolean bookRoute(String route) {
        if (availableRoutes.contains(route)) {
            availableRoutes.remove(route);
            System.out.println("已成功预订: " + route);
            return true;
        }
        System.out.println("预订失败: " + route + " 不可用");
        return false;
    }
}

客户端调用

最后,在客户端代码中,我们可以创建TravelServiceImpl的实例,并调用接口方法来搜索和预订旅行路线。

public class TravelClient {
    public static void main(String[] args) {
        TravelService travelService = new TravelServiceImpl();
        
        // 搜索旅行路线
        List<String> routes = travelService.searchRoutes("上海");
        System.out.println("可用旅行路线: " + routes);
        
        // 预订旅行路线
        boolean isBooked = travelService.bookRoute("北京 - 上海");
        System.out.println("预订成功: " + isBooked);
    }
}

关系图

我们可以使用mermaid语法来展示TravelService接口及其实现类之间的关系:

erDiagram
    TRAVEL_SERVICE {
        +searchRoutes(destination: String): List<String>
        +bookRoute(route: String): boolean
    }
    TRAVEL_SERVICE_IMPL {
        -availableRoutes: List<String>
        +searchRoutes(destination: String): List<String>
        +bookRoute(route: String): boolean
    }
    TRAVEL_SERVICE_IMPL --|> TRAVEL_SERVICE

旅行图

接下来展示一个简单的旅行图,表示用户的旅行查询和预订过程:

journey
    title 用户查询旅行路线和预订的过程
    section 查询过程
      用户输入目的地: 5: 用户
      系统返回可用旅行路线: 5: 系统
    section 预订过程
      用户选择旅行路线: 5: 用户
      系统确认预订: 5: 系统

结论

本文通过定义Java接口TravelService,并提供其实现类TravelServiceImpl,演示了如何编写接口及其调用过程。使用接口的好处在于我们可以更灵活地扩展系统功能而不影响现有代码。希望这个例子能对你理解Java接口的设计和使用有所帮助。