1

我正在寻找有关用于以下场景的最佳模式的建议。

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

对于有问题的对象,BeanUtils或者PropertyUtils将执行大部分转换。

我的域级别对象包含一个“类型”属性。基于这种类型,我们需要将 DTO“标签”属性设置为友好名称。

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

(上面的逻辑过于简单了)

在没有研究所有可能的设计模式的情况下,我想到了以下模式:

  1. 创建多个 LabelCreationStrategies,每种类型一个
  2. 在我的对象转换助手中,注入将“类型”映射到策略的映射
  3. 所以当对象转换发生时,它会找到合适的策略,并创建最合适的标签。

还有哪些其他模式可以在这里工作?

谢谢

4

2 回答 2

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");
        }
    }
于 2012-08-18T14:25:34.410 回答
0

您可以将您的类型更改为知道如何生成适当策略的实际对象。

例如:

 public interface Type {
   NamingStrategy getNamingStrategy();
 }

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

   public String toString() {
     return "AAA";
   }
 }
于 2012-08-19T00:43:52.740 回答