首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 留言板教學(七):Service 接口完整定義

     編輯:Java 相關知識

本篇匯總留言板業務層完整契約,定義 MessageService 與 UserService 兩大核心介面,涵蓋發文、回覆、查詢、刪除、用戶認證、註冊等所有業務場景,為 Controller 層提供穩定的依賴介面。

MessageService 介面

MessageService 介面截圖

public interface MessageService {
    // 主題貼發布
    void postTopic(Integer userId, String title, String content);
    // 回覆貼文
    void reply(Integer parentId, Integer userId, String title, String content);
    // 分頁查詢主題列表
    PageBean<Message> findTopics(int pageNo, int pageSize);
    // 查詢貼文詳情(含用戶資訊、遞歸回覆樹)
    Message findById(Integer id);
    // 軟刪除(狀態標記)
    void deleteById(Integer id);
    // 統計直接回覆數
    int countDirectReplies(Integer topicId);
    // 依用戶查詢其發文(分頁)
    PageBean<Message> findByUser(Integer userId, int pageNo, int pageSize);
    // 關鍵字搜尋主題(分頁)
    PageBean<Message> searchTopics(String keyword, int pageNo, int pageSize);
}

UserService 介面

public interface UserService {
    // 用戶註冊
    void register(String username, String password, String email);
    // 用戶登入驗證,成功返回 User 物件
    User login(String username, String password);
    // 依 ID 查詢用戶
    User findById(Integer id);
    // 依用戶名查詢(唯一性檢查)
    User findByUsername(String username);
    // 修改密碼
    void changePassword(Integer userId, String oldPwd, String newPwd);
    // 修改個人資料
    void updateProfile(Integer userId, String email);
}

PageBean 通用分頁載體

public class PageBean<T> implements Serializable {
    private int pageNo;        // 當前頁碼 (1-based)
    private int pageSize;      // 每頁筆數
    private long totalCount;   // 總筆數
    private int totalPage;     // 總頁數
    private List<T> list;      // 當前頁資料

    public PageBean(int pageNo, int pageSize, long totalCount, List<T> list) {
        this.pageNo = pageNo; this.pageSize = pageSize; this.totalCount = totalCount;
        this.totalPage = (int) Math.ceil((double) totalCount / pageSize);
        this.list = list;
    }
    // getter/setter 略
}

設計原則

  • 單一職責:MessageService 只管貼文業務,UserService 只管用戶業務。
  • 介面不暴露實現細節:無 JDBC、Connection、SQLException 等技術痕跡。
  • 參數驗證前置:Controller 層完成基礎驗證(非空、長度、格式),Service 層專注業務規則(權限、完整性)。
  • 返回值語義清晰:查無資料返回 null 或空列表,不拋異常;業務違規(如重複用戶名)拋 BusinessException。

依賴注入示例

在 Spring 中:

<bean id="messageService" class="com.example.service.impl.MessageServiceJdbcImpl">
    <property name="dataSource" ref="dataSource" />
    <property name="userService" ref="userService" />
</bean>

Controller 僅需 @Autowired MessageService messageService; 即可使用,完美解耦。

系列接近尾聲,下一篇將展示發文頁面(JSTL 版),串聯前後端完整流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved