设计模式将对象转换为详细版本

时间:2016-10-29 23:17:53

标签: java design-patterns java-8

假设我有一个对象Foo,我希望将它转换为ExtendedFoo对象。为了做到这一点,我必须增加Foo的某些方面以获得更多细节。详细信息从辅助类中获取。请参阅下面的示例:

public class Foo {
   String name;
   IBar bar;
}

public class ExtendedFoo {
   String name;
   IBar bar; // this has to be an extendedBar implementation.
}



public interface IIBar {
   public int getId();

   default int getType()
   { 
      return null;
   }
}

public class Bar implements IBar {
   public int getId();
}

public class ExtendedBar implements IBar {
   Bar bar;

   public int getId() { 
      bar.getId()); 
   }

   public int getType(){};
}

public static Helper {
   public static ExtendedBar convert(Bar bar) { 
      // makes some db calls to get type info to create an Extended Bar
   }
}

是否有设计模式或某些Builder esque方法来创建FooConverter,internall具有使用Helper等转换Foo-> ExtendedFoo的所有信息,我可以执行以下操作:

List<Foo> foos;

List<ExtendedFoo> extendedFoos = FooConverter.get().process(foos).transform();

请记住,在未来,我可能会将Foo添加到其他简单的 - &gt; Foo中的详细转换就像具有SimpleBiz和ExtendedBiz实现的IBizz一样

0 个答案:

没有答案