具有太多属性的java编辑对象

时间:2013-04-28 10:44:07

标签: java design-patterns architecture software-design

背景

我有一个类Person,它有很多属性。

我想要什么

允许用户编辑这些属性。

我尝试了1

create function其参数是所有属性,创建一个sql语句,然后调用存储过程。

问题

也许用户只想编辑他的一个参数(这是更常见的情况),所以按照我的方式,他必须输入所有属性,即使他只想编辑其中一个。

我尝试了什么2

为每个属性创建功能以进行编辑。

问题

我必须使用太多的sql语句来编写太多的函数。

我的问题

解决问题的最佳方法是什么?是否有任何设计模式?

提前致谢

1 个答案:

答案 0 :(得分:3)

您可以将属性更新为Map<String,Object&gt;其中 ==您的属性名称和 =属性的值。

以这种方式

  • 您可以通过Map
  • 获取多个属性
  • 您甚至可以使用单个属性进行更新,而不会限制用户为其他属性赋值

用户提供相同内容后,您可以遍历地图条目并相应地更新Person对象。

编辑:说Personnameage属性,然后您提供方法updatePerson一个Map,其中包含[key is"name" and value as "Actual Name"], [key is"age" and value as "15"]等条目

然后在您的更新方法中,您可以遍历Map并获取要更新的属性,如下所示

public boolean updatePerson(Map<String,Object> valueMap) {
    for(Entry<String, Object> enrty : valueMap.entrySet()) {
        String key = enrty.getKey();
        //Person p = ... logic to get person
        if("name".equals(key)) {
            //p.setName(enrty.getValue());
        }
        else
        if("age".equals(key)) {
            //...
        }
        //finally update Person into DB...  
    }
    return true;
}