2012-03-19 33 views
2

我使用C++和Java一段時間,最近我在jquery上。我注意到了jquery的鏈式功能。那麼我認爲,如果我們可以像jQuery那樣改變C++/Java中的setter?例如,如果我們的代碼是像jquery一樣,我們可以使用C++/Java中的鏈式設置器嗎?

class Person { 
    private String name; 
    private int age; 

    public String getName() { 
     return name; 
    } 

    public int getAge() { 
     return age; 
    } 

    public Person setName(String name) { 
     this.name = name; 
     return this; 
    } 

    public Person setAge(int age) { 
     this.age = age; 
     return this; 
    } 
} 

然後,我們可以寫代碼如下代替:

Person person = new Person(); 
person.setName("Tom").setAge(20); 

如果我們有很多制定者,這似乎是更簡單。

我不知道這是個好主意嗎?你是否同意我的觀點?給我你的意見。謝謝!

+0

這種方法沒有任何問題,一些內置實用程序使用這種模式(例如'StringBuilder')。我個人不喜歡它,但那只是我。如果它適合你,那麼就去做吧。 – aroth 2012-03-19 02:46:45

+0

相關:http://stackoverflow.com/q/4899756/240633 – ergosys 2012-03-19 02:51:30

+1

如果您希望不同的setter修改同一個對象,或者將對象存儲在setter鏈的末尾某處,您將不得不返回一個引用。 – 2012-03-19 02:58:33

回答

4

這在C++中通常稱爲方法鏈接
使用方法鏈接更多是一個選擇的問題。

方法鏈最常見的用法是在iostream庫中。
例如,cout << x << y可以工作,因爲cout << x是返回cout的函數。

方法chaning通常用於Named Parameter Idiom

+0

謝謝!我會學習它! – devbean 2012-03-19 02:47:22

5

這通常用於創建fluent interface,並且可以用任何語言實現。

  • 優點:可以提高可讀性並允許更簡潔的代碼。
  • 缺點:調試可能會更困難,因爲斷點通常是基於行的。
+0

是的,這是真的。 – devbean 2012-03-19 02:47:46

0

方法鏈接在C++中正常工作,並且完全沒有問題。

使用getters/setters(aka訪問器和mutators)足以關心鏈接他們暗示你的代碼有design problems雖然。

相關問題