Java 如何使用设计模式将一个对象强制转换为具有相同属性的另一个对象?没有图书馆
我在Java中有两个POJO:Java 如何使用设计模式将一个对象强制转换为具有相同属性的另一个对象?没有图书馆,java,android,design-patterns,pojo,Java,Android,Design Patterns,Pojo,我在Java中有两个POJO:Movie用于我的数据库,另一个Movie用于从请求到Web服务的类似结果 package .service public class Movie{ @Serialized("Title") private String title; @Serialized("Year") private String year; @Serialized("Poster") private String poster } package .database publi
Movie
用于我的数据库,另一个Movie
用于从请求到Web服务的类似结果
package .service
public class Movie{
@Serialized("Title")
private String title;
@Serialized("Year")
private String year;
@Serialized("Poster")
private String poster
}
package .database
public class Movie{
@ColumnInfo(name = "title")
private String title;
@ColumnInfo(name = "year")
private String year;
@ColumnInfo(name = "poster")
private String poster;
}
我通过创建一个进行转换的类解决了这个问题:
public class MovieObjectAdapter {
public static List<service.Movie> castFrom(List<database.Movie>moviesDatabase){
List<service.Movie> moviesModel = new ArrayList<>();
for (database.Movie movie:
moviesDatabase) {
service.Movie movieModel = new service.Movie();
movieModel.setTitle(movie.getTitle());
movieModel.setPoster(movie.getPoster());
movieModel.setYear(movie.getYear());
moviesModel.add(movieModel);
}
return moviesModel;
}
}
公共类MovieObjectAdapter{
公共静态列表(ListmoviesDatabase){
List moviesModel=new ArrayList();
对于(database.Movie电影:
电影数据库){
service.Movie movieModel=new service.Movie();
movieModel.setTitle(movie.getTitle());
movieModel.setPoster(movie.getPoster());
movieModel.setYear(movie.getYear());
添加(movieModel);
}
回归电影模型;
}
}
但我对这个不太满意。那么你能推荐我使用哪种设计模式呢
编辑:
哦,很抱歉,我忘记了一点细节,我的服务有另一个属性名称,即我的数据库,这就是我有两个POJO的原因。很抱歉忽略此项。服务包中的电影和数据库包中的电影具有相同的属性。你应该考虑有一个通用对象的包。例如,无论是在服务中还是在数据库中,只要需要,使用应用程序主包中的电影都会更加容易和清晰 我已经用Mapper类完成了这项工作
public final class Mapper {
public static service.Movie from(database.Movie dMovie) {
service.Movie movie = new service.Movie();
// set the properties based on database.Movie
return movie;
}
}
你可以使用一种叫做“反射”的技术。如本文所述: 这种技术对于像将一个对象映射到另一个对象这样的任务非常有效。但它有一个缺点-这种映射可能很慢(相对而言,与直接映射相比,正如您所做的那样)。
但是,我认为,对你来说,这是一个理想的解决方案。我很抱歉把我的问题弄糊涂了。但是如果你看到我的编辑,我的POJO有不同的注释