我们可以像Cquery一样在C ++ / Java中使用链式样式设置器吗?

时间:2012-03-19 02:41:43

标签: java c++ setter

我正在使用C ++和Java一段时间,最近我正在使用jquery。我注意到了jquery的链式功能。那么我想,如果我们可以像Jquery一样改变C ++ / Java中的setter?例如,如果我们的代码是

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);

如果我们有很多制定者,这似乎更简单。

我想知道这是不是一个好主意?你是否同意我的观点?请告诉我你的意见。谢谢!

3 个答案:

答案 0 :(得分:5)

这通常用于创建fluent interface,并且可以用任何语言实现。

  • 优点:可以提高可读性并允许更简洁的代码。
  • 缺点:调试可能更难,因为断点通常是基于行的。

答案 1 :(得分:4)

这通常在C ++中称为方法链接 使用方法链接更像是一个选择问题。

方法链的最常见用法是在iostream库中 例如,cout << x << y有效,因为cout << x是一个返回cout的函数。

方法分析通常用于 Named Parameter Idiom

答案 2 :(得分:0)

方法链在C ++中运行良好,完全没问题。

使用getter / setter(又名访问器和mutator)足以关注链接,但提示您的代码有design problems