Java 工厂模式最适合我的情况吗?

Java 工厂模式最适合我的情况吗?,java,factory,Java,Factory,我有一个Feeder类,其中包含一个方法,该方法将数据馈送到列表、给定数据、列表和自定义类中: default void feedData(CustomData myData, List list, Class c){ ObjectMapper objectMapper = new ObjectMapper(); if(myData!= null) { for (Map<String, Object> map : myData.getData()) {

我有一个Feeder类,其中包含一个方法,该方法将数据馈送到列表、给定数据、列表和自定义类中:

default void feedData(CustomData myData, List list, Class c){
    ObjectMapper objectMapper = new ObjectMapper();
    if(myData!= null) {
        for (Map<String, Object> map : myData.getData()) {
            list.add(objectMapper.convertValue(map, c));
        }
    }
}
第2类:

public void feed(CustomData myData){
    feedData(myData, myField2, CustomClass2.class);
}
等等

然后是一个接口,例如我声明的IFeeder

void feed(CustomData myData);
但是我可以把
feedData
方法放在哪里呢?在这个界面里面

如果是的话,我应该将其声明为默认值,但是default关键字用于返回始终相同结果的默认方法,不是吗

谢谢您的建议。

公共静态void feedData(CustomData myData、列表列表、类clazz){
public static <T>  void  feedData(CustomData myData, List<T> list, Class<T> clazz){
    ObjectMapper objectMapper = new ObjectMapper();
    if(myData!= null) {
        for (Map<String, Object> map : myData.getData()) {
            list.add(objectMapper.convertValue(map, clazz));
        }
    }
}
ObjectMapper ObjectMapper=新的ObjectMapper(); if(myData!=null){ for(映射:myData.getData()){ add(objectMapper.convertValue(map,clazz)); } } }
我相信这应该行得通。这可以是某个util类中的静态方法


我假设您所引用的所有其他类都可以实现一个公共接口。

Factory是一个创造性的DP,但您需要一个类似facade Pattern的结构DP。您可以引用它,这真的很有帮助。但在本例中,对于接口,我的feedData方法如何?默认情况下,我是否也应该将其放在界面中?我不知道如何使用工厂,请在此处查看ServerSocketEx.SocketHandlerFactory:。SocketServers接受新的连接,然后需要处理这些连接。ServerSocketEx是一种自动创建处理程序并在有新连接时启动处理程序的方法。但是工厂非常灵活,允许您创建一个子类来提供自定义ServerSocketRunnersSidenote:(可能是一个微优化)您可以在if外部创建ObjectMapper。这意味着您可以创建对象,而不管它是否将被实际使用。我要么注入它,要么至少在if中创建它。
public static <T>  void  feedData(CustomData myData, List<T> list, Class<T> clazz){
    ObjectMapper objectMapper = new ObjectMapper();
    if(myData!= null) {
        for (Map<String, Object> map : myData.getData()) {
            list.add(objectMapper.convertValue(map, clazz));
        }
    }
}