对象转换的设计模式

时间:2012-08-17 21:16:53

标签: design-patterns

我正在寻找有关以下方案使用的最佳模式的建议。

涉及从域级别对象转换为UI DTO

对于相关对象,BeanUtilsPropertyUtils将执行大部分转换。

我的域级对象包含“type”属性。基于此类型,我们需要将DTO“label”属性设置为友好名称。

  • 因此,对于AAA类型,我们需要创建一个标签,如下所示:property1 + "-" + property2
  • 对于BBB类型,我们需要创建如下标签:property2 + "/" + property1
  • 对于CCC类型,我们需要根据数据库查询创建标签

(以上逻辑过于简化)

如果不研究所有可能的设计模式,我会考虑以下模式:

  1. 创建一些LabelCreationStrategies,每种类型一个
  2. 在我的对象转换助手中,注入一个将“type”映射到策略
  3. 的地图
  4. 因此,当对象转换发生时,它会找到 适当的策略,并创建最合适的标签。
  5. 这里还有哪些其他模式?

    由于

2 个答案:

答案 0 :(得分:0)

使用策略模式

 public abstract class AbstractClass{   //or interface 
       public abstract void print();
    }


    public class AAA extends AbstractClass{

        @Override
        public void print(){
            System.out.println("AAA");
        }
    }

    public class BBB extends AbstractClass{

        @Override
        public void print(){
            System.out.println("BBB");
        }
    }

答案 1 :(得分:0)

您可以将Type更改为知道如何生成相应策略的实际对象。

例如:

 public interface Type {
   NamingStrategy getNamingStrategy();
 }

 public class AAA implements Type {
   public NamingStrategy getNamingStrategy() {
     return new DatabaseQueryStrategy();
   }

   public String toString() {
     return "AAA";
   }
 }