[心得] Effective Java心得筆記
通讀了Java程式設計思想,發現是個書呆子。還是不會寫程式碼啊。。
所以別光看不練,看千本書不如練熟一本!
學習程式設計藝術,首先要學會基本的規則。
然後才知道什麼時候打破這些規則。
Java支援4種型別:
介面interface
類calss
陣列arrayList
基本型別primitive
前3種型別通常稱為引用型別。
類例項和陣列都是物件,而基本型別的值則不是物件。
簽名不包含它的返回型別。
public static Boolean valueof(Boolean b) {
return b?Boolean.TRUE:Boolean.False;
靜態工廠方法與構造器相比,優勢:
呼叫可以起有含義的名稱;
不必在每次呼叫時例項化新物件;
它們可以返回原返回型別的任何子型別的物件。
缺點如下:
類如果不含有公有的或受保護的構造器,就不能被子類化。它與其它靜態方法無本質區別。
builder模式不直接呼叫建構函式,而是很巧妙地返回builder物件本身,從而支援級聯式初始化。
package com.test;
/**
* Created by tangchen on 2016/11/11.
*/
public class NutritionFacts {
private final int servingSize;
private final int servings;
private final int calories;
private final int fat;
private final int sodium;
private final int carboydrate;
public static class Builder {
private final int servingSize;
private final int servings;
private int calories = 0;
private int fat = 0;
private int carbohydrate = 0;
private int sodium = 0;
public Builder(int servingSize, int servings) {
this.servingSize = servingSize;
this.servings = servings;
}
public Builder calories(int val) {
calories = val;
return this;
}
public Builder fat(int val) {
fat = val;
return this;
}
public Builder carbohydrate(int val) {
carbohydrate = val;
return this;
}
public Builder sodium(int val) {
sodium = val;
return this;
}
public NutritionFacts build() {
return new NutritionFacts(this);
}
}
private NutritionFacts(Builder builder) {
servingSize = builder.servingSize;
servings = builder.servings;
calories = builder.calories;
fat = builder.fat;
sodium = builder.sodium;
carboydrate = builder.carbohydrate;
}
}
usage:
//builder的setter方法返回builder本身,以便可以把呼叫連結起來
NutritionFacts cocaColca= new NutritionFacts.Builder(240,8).calories(100).sodium(35).carbohydrate(27).build();
未完待續
相關文章
- 【筆記】黃如花.資訊檢索.學習心得筆記
- 技術轉向專案管理的心得筆記專案管理筆記
- treejs 記錄心得--開篇JS
- 《Effective Java 第二版》讀書筆記Java筆記
- 休假心得
- Effective C++筆記C++筆記
- java反射機制的學習心得Java反射
- 聊聊Spring事件:自己的一些學習筆記和心得Spring事件筆記
- Effective Python學習筆記Python筆記
- effective C++筆記1C++筆記
- 實驗心得
- 面試心得面試
- 心得體會
- 成長心得
- 找工作心得
- CDN快取學習筆記,讀騰訊雲的一些心得和整理筆記快取筆記
- 《Effective DevOps》閱讀筆記 82dev筆記
- 《Effective DevOps》閱讀筆記 59dev筆記
- 《Effective DevOps》閱讀筆記 19dev筆記
- 《Effective C++》讀書筆記C++筆記
- 《Effective-Ruby》讀書筆記筆記
- 圖神經網路七日打卡營學習筆記及心得神經網路筆記
- onenote使用心得
- PyCharm使用心得PyCharm
- APScheduler 學習心得
- 樂觀鎖心得
- webpack心得總結Web
- canvas動畫心得Canvas動畫
- Composer使用心得
- 程式設計心得程式設計
- Linux學習心得Linux
- Spring原始碼心得Spring原始碼
- selenium測試心得
- github心得體會Github
- Redis 學習心得Redis
- 外包篩選心得
- nessus使用教程心得
- Github學習心得Github
- 2020保研心得