我来自Java语言背景。我了解在Java中,要实例化一个类,可以提供多个构造函数来设置类变量。但是,可以为构造函数提供一个无类型的对象来初始化类变量,如下所示:
public class Book {
String title;
String author;
public Book(Object data) {
this.title = data.title;
this.author = data.author;
}
}
所以我可以实例化一个新的Book实例,例如:
Book bookOne = new Book({ title: "Book One", author: "Author One" });
我之所以想这样做,是因为如果一个类在初始化时要说10个以上的变量,那么通过给出一个例如10个参数的列表很难可靠地实例化一个类。
您可以通过依赖JSON API并指定a String
而不是Object
as参数来实现。
但这不是类型安全的,它是Java中强类型的反模式。
请注意,当您在JavaScript前端和Java后端之间进行通信时,当然可以接受Java中的JSON。但通常我们不直接操作JSON。在特定类的实例中反序列化该字段,该字段表示JSON传输的信息。
之所以要这样做,是因为如果一个类在初始化时要说的变量超过10个,则很难通过给出一个例如10个参数的列表来可靠地实例化一个类。
具有10个参数的类构造函数也不是一个好的模式。
在某些情况下,为一个实例设置10个字段可能是可以接受的:尤其是因为该类仅表示一个数据结构。
在这种情况下,设置对象字段的最佳方法是使用设置器或构建器。
1)二传手方式
Book b = new Book();
b.setTitle(...);
b.setAuthor(...);
2)建设者的方式
Book b = new Book.BookBuilder()
.withTitle(...)
.withAuthor(...)
.build();
但是,实际上应避免由于可能放置错误的参数类型以及构造调用的可读性而容易出错的构造函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句