除了偶尔的工厂和MVC之外,我不经常使用设计模式,我想更多地使用它们。
我手头有一个具体案例,希望您对在这种情况下使用设计模式有意见。
在我的应用程序中,我不得不经常在不同情况下转换对象。我可能必须将Hibernate POJO转换为DTO,因为我使用GWT,并且Hibernate POJO不能序列化,也不能通过线路发送。
在另一种情况下,我可能需要将Java对象转换为SolrInputDocument的对象,以便由Solr进行索引。
我想知道是否应该为此使用设计模式。看来“对象转换”是一种通用任务,可以通过一种模式以灵活/抽象的方式进行处理,但是我真的不知道如何实现。
如果没有模式,我只会为每种转换类型创建一个单独的类,例如CourseToSolrInputDocument(Course是我的应用程序中的Hibernate实体)。或CourseToCourseDTO。这些转换类中的每一个都可能具有一个称为的静态方法convert()
,该方法将源对象作为输入并返回输出对象。
但这不是一个真正的模式,对吗?因此,我从泛型入手,并创建了实现Converter接口的此类。但是以某种方式感到傻傻的创建了一个通用的接口,除了能够祝贺自己使用通用外,我没有真正的优势。
public class CourseToSolrInputDocument implements Converter<Course, SolrInputDocument> {
@Override
public void convert(Course source, SolrInputDocument destination) {
//To change body of implemented methods use File | Settings | File Templates.
}
}
因此,这里的真正问题是:是否存在适用于通用对象转换的模式?您的方法是什么?与仅使用每个转换类的类型方法相比,优点是什么?
模式更多是为您的工作(以及如何正确执行示例)命名,而不是令人讨厌的使用。与如何使用更多模式相比,更好的问题是:我已经使用了哪些模式(可能以某种不完整/复杂的方式)。
—
user470365