gpt4 book ai didi

java - 对象转换的设计模式和约定

转载 作者:行者123 更新时间:2023-11-30 07:31:12 24 4
gpt4 key购买 nike

在对象转换方面,以下两种方法中的首选方法是什么?

使用 asX() 方法进行对象转换

public class Foo {
int foo;
public Bar asBar() {
return new Bar(foo);
}
}

class Bar {
int bar;
public Bar(int bar) {
this.bar = bar;
}
}

使用构造函数进行对象转换

public class Foo {
int foo;
}

class Bar {
int bar;
public Bar(int bar) {
this.bar = bar;
}

public Bar(Foo foo) {
this.bar = foo.foo;
}

}

与另一种方法相比,我不确定这两种方法的优点(在可维护性、可扩展性等方面)。既定标准是什么?

我承认这个问题相当广泛,正如 Paul Boddington 在评论中指出的那样,但希望在这个问题结束之前进行一些有用的讨论。

最佳答案

我见过很多使用的并且我个人喜欢的是很多JDK本身使用的风格,其中涉及目标类中的静态工厂方法。最终目标是使代码易于阅读。

例如:

Integer.fromString("42")

从OP中的示例中借出:

public class Foo {
int foo;
}

class Bar {
int bar;

public static Bar fromFoo(Foo foo) {
return new Bar(foo.foo);
}

public Bar(int bar) {
this.bar = bar;
}

}

这样,某人就可以从 Foo 创建一个 Bar,并且这样做时代码可读性很好:

Bar bar = Bar.fromFoo(foo);

它读起来几乎像英语,但不是 COBOL!

关于java - 对象转换的设计模式和约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36109250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com