Johnny850807 / Coding-GYM

自己菜鳥階段時在練習Java物件導向、設計模式時,所設計的題庫,此專案庫目前用來讓我的同學/學生 (欠調教的) 們提交程式碼來進行Review,欲參考OOP題目者可直接到Projects區觀看,題目皆(85%)擁有示範解答程式碼。ISSUE放的都是Code Review嘴砲。(物件導向設計學分兩階段→JAVA→設計模式)
24 stars 6 forks source link

Builder Pattern : 建檔 #83

Open Johnny850807 opened 7 years ago

Johnny850807 commented 7 years ago

難度:1

Builder Pattern 解耦了創建某資源的一連串動作

現在你必須撰寫一個程式, 首先讓使用者決定要建構 (0) csv檔 還是 (1) txt檔 然而之後讓使用者輸入 檔案名稱

記得輸出時檔名要加上檔案類型

然而之後使用者必須再輸入三行內容, 都會作為寫入檔案的內容 (一行一行寫)。

但是寫入檔案的邏輯不一樣:

如果是 csv檔, 每個內容之間都以逗號作為分隔。

如果是 txt檔, 每個內容之間都以換行作為分隔。

最後在建完檔案之後,Builder要返回生成的File檔案,並且印出其絕對路徑

印出絕對路徑 file.getAbsolutePath()

你要使用Builder 模式,而Builder模式應該長得像...

FileBuilder builder = new CsvBuilder();
File file = builder.fileName("哈哈")
           .addContent("Hi")
           .addContent("I'm Johnny")
           .addContent("Goodbye")
           .buildFile();

這樣的好處十分明顯,除了可讀性高, 如果之後要換檔案類型,只需要new出不同的Builder,其餘程式都無須改寫。

而Builder不斷回傳自己,來讓之後可以延續呼叫函數的設計風格稱為 Fluent API 風格。

Example output

輸入檔案類型: (0) csv (1) txt
0
輸入檔案名稱 : 
哈哈
輸入三行檔案內容:
Hi
I'm Johnny
Goodbye
建造完成: D:\我的文件\ProgrammingWorkShop\Eclipse_Java_WorkShop\Builder  文件建造者\哈哈.csv
輸入檔案類型: (0) csv (1) txt
1
輸入檔案名稱 : 
哈哈
輸入三行檔案內容:
Hi
I'm Johnny
Goodbye
建造完成: D:\我的文件\ProgrammingWorkShop\Eclipse_Java_WorkShop\Builder  文件建造者\哈哈.txt

example csv image

example txt image