以命令列介面實作圖書館借還書系統,功能包含建立圖書/讀者、借書/還書、列出所有圖書/讀者/已借出/逾期未還。每位讀者最多借 3 本書,借閱期限 3 週。本例主要展示如何使用內部類實作命令模式,取代冗長的 if-else 結構,讓程式更易擴充。
execute() 方法,各具體命令繼承並覆寫。isExpired()、canBorrow())。Command (abstract)
├─ Command1 : 列出所有圖書 (isValid 預設 true)
├─ Command2 extends Command1 : 列出已借出圖書 (isValid 判斷 isBorrowed)
├─ Command3 extends Command1 : 列出逾期圖書 (isValid 判斷 isExpired)
├─ Command4 : 列出所有讀者
├─ Command5 : 新增圖書
├─ Command6 : 新增讀者
├─ Command7 : 借書流程 (驗證讀者/圖書/借閱上限/日期格式)
└─ Command8 : 還書流程 (驗證歸還者與圖書對應)
Command1 定義遍歷邏輯,子類別只需覆寫 isValid(Book) 即可複用列印程式碼。Command 內部類可直接存取 LibrarySimulator 的 books、readers 等私有欄位,無需額外參數傳遞。prompt(String, String) 結合正則表達式強制使用者輸入合法格式。public static void main(String[] args) {
new LibrarySimulator().start();
}
執行後進入主選單迴圈,輸入 1-9 執行對應操作,輸入 9 離開。
適合 Java 初學者理解:內部類封裝、命令模式、Template Method 模式、集合操作、日期處理、正則驗證等核心概念的綜合應用。