相关疑难解决方法(0)

在C#3中编写流畅接口的技巧

我正在为C#中的流畅接口提供一些好的技巧.我自己只是在学习它,但很想听到别人在我正在阅读的文章之外的想法.特别是我在追求:

  1. 什么时候流利的?
  2. 有没有流利的模式?
  3. 什么是C#,使流畅的界面更流畅(例如扩展方法)
  4. 是一个复杂流畅的界面仍然是一个流利的?
  5. 重构以获得流畅的界面或重构现有的流畅界面
  6. 你曾与之合作或推荐的任何好例子吗?

如果您可以发布一个提示或思想,或每个帖子的任何内容.我想看看他们如何投票.

先感谢您.

c# design-patterns fluent-interface

43
推荐指数
6
解决办法
2万
查看次数

Setters返回实例引用.图案还是反图案?

我正在考虑代码结构,并思考setter.这些曾经是void方法,那么为什么不使用一些可能的返回值,来启用一些新的代码结构呢?

我的想法是将所有属性setter从void更改为实例引用,因此我们可以按顺序执行setter或其他操作.这是一个例子:

public class MyClass {
    private int foo;
    private String bar;

    public MyClass setFoo(int foo) {
        this.foo = foo;
        return this;
    }

    public MyClass setBar(String bar) {
        this.bar = bar;
        return this;
    }

}
Run Code Online (Sandbox Code Playgroud)

然后在我们可以做的代码中的其他地方:

...
MyClass myInstance = new MyClass();
myInstance.setFoo(auxFoo).setBar(auxBar);
...
Run Code Online (Sandbox Code Playgroud)

这允许在一行中设置所有类属性,这在转换方法中很有用.

甚至:

...
return myInstance.setFoo(auxFoo);
Run Code Online (Sandbox Code Playgroud)

这个是我的目标,例如在返回时可以设置错误属性.例如,这可以简化捕获块.

编辑: 经过一些答案我需要补充:

  • 问题只是关于setter(不是关于在所有方法中执行此操作),并且不限于链接,而是限于其他用法,return例如示例.
  • 从void到其他东西的变化是否会产生任何问题?例如,JavaBeans内省.
  • 你能看到这样做的优势或劣势吗?

我希望看到一些讨论.

java design-patterns coding-style

6
推荐指数
2
解决办法
3474
查看次数

有关反转字符串的问题

我正在尝试做一个简单的字符串操作.输入是"谋杀",我想得到"谋杀".

我试过这个

String str = "murder";
StringBuffer buf = new StringBuffer(str);
// buf is now "murder", so i append the reverse which is "redrum"
buf.append(buf.reverse());
System.out.println(buf);
Run Code Online (Sandbox Code Playgroud)

但现在我得到"redrumredrum"而不是"murderredrum".

谁能解释我的程序有什么问题?谢谢.

java string reverse

3
推荐指数
1
解决办法
674
查看次数