功能描述:
添加商品 addProduct<ID,name,desc>,商品有一些基本的信息,比如价格,名称,描述等, 除此之外,商品还可以有图片.图片可以有多张,比如商品有缩略图,清晰图,颜色图,并且在展示商品时,希望在不同的位置显示不同的图片.并且有可能某种类型图片只能为控制为一张,当新上传一张该类型的图片,则原来的图片被替换.
初步的设计:如图
[code]
Public Class ProductTransaction
{
private ImgDao imgDao;
private ProductDao productDao;
public void AddProduct(Product product)
{
daoManager.BeginTransaction();
try
{
productDao.AddProduct(product);
imgDao.AddImg(Product.ImgList);
daoManager.CommitTransaction();
}
catch
{
daoManager.RollBackTransaction();
}
}
public void UpdateProduct(Product product)
{
daoManager.BeginTransaction();
try
{
productDao.UpdateProduct(product);
imgDao.Del(Product.ID);//先删
imgDao.AddImg(Product.ImgList);//在添加
daoManager.CommitTransaction();
}
catch
{
daoManager.RollBackTransaction();
}
}
public Set GetImgList(string ProductID)
{
//根据商品ID获取商品图片
}
public Set GetImgList(string ProductID,string ImgType)
{
//根据商品ID获取商品某类型(imgType)的图片
}
}
因为以后想可以对商品图片单独进行一个维护. 我想抽出一个图片事务"ImgTransaction",那么"ProductTransaction"可以用"ImgTransaction"完成原来的添加图片功能,那么这里就:
public void AddProduct(Product product)
{
daoManager.BeginTransaction();
try
{
productDao.AddProduct(product);
daoManager.CommitTransaction();
}
catch
{
daoManager.RollBackTransaction();
}
imgTransaction.AddImg(Product.ImgList);//添加图片
}
这样做本来一个事务的变成了两个事务,这样有损性能. 后来觉得没必要抽出一个图片事务"ImgTransaction", 但用"ProductTransaction"是否合理?
我对图片类型的处理感觉不妥, 要做到不同位置展示不同图片,只能通过GetImgList(string ProductID,string ImgType)来取, ProductID是商品ID,ImgType是
图片类型.这里应该怎样设计?请高手指教.