2012年10月30日 星期二

Builder Pattern

這邊的Builder Pattern 跟 GOF的design pattern 中的builder pattern 略為不同,
這是由java語言大師Josh Bloch所提出,主要用來建構immutable物件,透過一個static 的inner  class來控制Outer class的屬性,模式如下:

class SearchCriteria {
private final String firstName;
...
public String getFirstName() {
        return firstName;
    }
... 
private SearchCriteria(Builder builder){
    this.finstName = builder.firstName;
    ....
}
     
public static class Builder {
   private String firstName;
   ...
   public SearchCriteria firstName(String firstName) {
            this.firstName = firstName;
            return this;
        } 
    ...
    
   public SearchCriteria build() {
            return new ( this );
        }
} 

}

使用時就是
SearchCriteria   criteria  = new SearchCriteria.Builder().firstName("Joseph")...一直點下去再.build();

這個Pattern有啥好處?
在對於要建立一個不可變物件時很好用,因為
SearchCriteria 物件在生成後沒有人可以動到它內部的屬性,可達想要的immutable物件
的特性(如:thread safe 等等),
其次在於如果constructor 有多個參數要設定,其中又有幾個是可有可無,這種建構子會
很多,整個class會落落長(台語,很多很長的意思),
Pattern的好處就是同樣達到目地,但可以漂亮又有彈性的達成,在維護和擴充上都有幫助。
 
補充說明:Builder 的設值只會更改 Builder 的內容, SearchCriteria 這個物件直到 
Builder的build() 執行後才產生,所以它生出來的是 immutable !
 
 
這個知識本來從沒聽過,在換工作後,和高手一起工作時,經過他的提點再自己google
仔細了解才體會這個pattern !

 

2012年10月10日 星期三

Eclipse shortcut


ctrl + shift + r  => 找出想開啟的檔案
ctrl + e  =>開啟編輯區的檔案列表
ctrl + pageUp/pageDown => 切換編輯區的檔案
alt + 左/右 => 切換編輯歷程

ctrl + t => 秀出實作樹狀
ctrl + d =>刪除一行
ctrl + m =>將編輯區最大化及還原
ctrl + F11 =>再次執行上次執行的程式

ctrl + / =>單行註解
ctrl + shift + / =>將mark處多行註解
ctrl + shift + \ =>將mark處多行註解取消
ctrl + shift + p  => 對應的大括號
ctrl + shift + o  => 自動import lib
ctrl + shift + f =>code排版
ctrl + shift + g =>找出使用該method或變數的地方

shift + F2 =>看javaDoc

F3 =>秀出變數宣告處
F4 =>秀出 type 階層

alt + shift + z => 產生try catch區塊

COVID-19 確診經歷紀實

原本以為真的是天選之人,就算先前家裡兩個小孩都確診都逃過了(可能有中獎但無症狀吧),不過就在2023年六月18日破解自認為天選之人的"心態",為什麼可以確認就是這天中獎的呢?因為在前都是居家上班,到人多的室內場所都會戴口罩,就剛好這天傍晚原本只想說要去附近的國...