[心得] 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();
未完待續
相關文章
- [心得]機器學習精華筆記機器學習筆記
- #EffectiveJava筆記#閱讀心得Java筆記
- [心得]怪誕心理學精華筆記筆記
- Effective Java 讀書筆記Java筆記
- [心得] JavaScript權威指南學習筆記JavaScript筆記
- State模式探討(筆記心得體會)模式筆記
- Proxy模式探討(筆記心得體會)模式筆記
- Iterators模式探討(筆記心得體會)模式筆記
- Effective Java 讀書筆記(2)Java筆記
- 【筆記】黃如花.資訊檢索.學習心得筆記
- 番茄工作法圖解——筆記與心得圖解筆記
- java實習生學習心得Java
- Effective Java讀書筆記(目錄)Java筆記
- 技術轉向專案管理的心得筆記專案管理筆記
- [心得]機器學習基礎之線性代數筆記機器學習筆記
- synchronized關鍵字 - [JAVA心得]synchronizedJava
- JAVA托盤程式SystemTray的心得Java
- treejs 記錄心得--開篇JS
- 《Effective Java 第二版》讀書筆記Java筆記
- 面試心得面試
- sql心得SQL
- oracle心得Oracle
- Effective C++筆記C++筆記
- 《Effective C++》筆記C++筆記
- CDN快取學習筆記,讀騰訊雲的一些心得和整理筆記快取筆記
- java反射機制的學習心得Java反射
- JAVA反編譯技術研究心得Java編譯
- Effective Java讀書筆記六:方法(38-44)Java筆記
- Effective Java讀書筆記八:巢狀類(22)Java筆記巢狀
- 找工作心得
- [心得]gmock模組Mock
- canvas動畫心得Canvas動畫
- 面試的心得面試
- 學習心得
- [心得] CLisp巨集Lisp
- nested loop心得OOP
- 實驗心得
- Effective Oracle by Design筆記Oracle筆記