如何使此算法通用?

时间:2012-08-09 17:52:56

标签: java

我正在研究CMS对象的对象缓存。我需要在Product和子对象(Options和Attributes)之间维护父/子关系。父(Product)在第一个代码示例中说明。

这很容易做到,但我正在寻找一种方法来将子项分配给父项,如第二个代码块中所示,通用。

由于所有CMS对象都扩展了CMSContent,我可以使用ProductID。但是,有没有办法使字段(例如ProductAttribute)通用,以便我可以将算法放在方法中并使用父对象和子对象调用该方法来进行属性赋值?

我知道像Hibernate这样的ORM框架在这里是合适的,但由于我有一个固定的数据库结构,所以不适合。

public class Product extends CMSContent {
    private List<ProductAttribute> productAttributes;
    private List<ProductOptions> productOptions;

    // getters,setters
}

匹配它们的算法。

// attach Product Attributes to Product
for (Product p : listP) {
    Map<String, Object> parameters = new HashMap<String, Object>();
    for (ProductAttribute po : listPA) {
        parameters.put("pid", p.getPid());
        parameters.put("ref", po.getRid());

        int i = jdbcTemplate.queryForInt(sqlAttr, parameters);  // select count(*), 1 if matched.

        if (i == 1) {
            p.getProductAttributes().add(po);  // generic field?
        }
    }
}

1 个答案:

答案 0 :(得分:1)

这两个产品方法中的帮助不会

public void add(ProductAttribute item){
  productAttributes.add(item);
}
public void add(ProductOption item){
  productOption.add(item);
}

因此您应该只需添加ProductAttribute或ProductOption