2012-03-19 65 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虽然。

相关问题