有这样一个简单应用:Tproduct = class  产品实体
private
   Fid: integer;
   FName: string;
end;Tproduct_interface = class(Tform)  产品维护窗口
private
  manager: Tproduct_manager;  
  createproduct(value: TProduct);
public
  constructor createform(Aowner: TComponent);
end;Tproduct_manager = class  产品管理逻辑
private
   isvalid(value: TProduct): boolean;
   mapper: Tproduct_mapper;
public
   function getproduct: TProduct;
   function getproducts: TAdodataset;
   procedure create(value: TProduct);
   procedure update(alue: TProduct);
   procedure delete(int id); 
end;Tproduct_mapper = class   产品对象到数据库映射
private
   FProductsHolder: TAdoDataSet; //数据保持器
public
   function getproduct: TPorduct;
   function getproducts: Tadodataset; //返回保持器,为了显示在GRID控件
   procedure create(tproduct value);
   proceudre update(value: Tproduct);
   procedure delete(id: integer); 
end;现在就简单的说:product 对象持久化到数据库是一个单一表的映射。
问题是:当我要更新一个产品数据,那我就需要将product对象从UI传递到manager在传递到mapper.
得到一个产品数据则循序相反。那么请问 Tproduct 对象每一层都对其有依赖,不知道这样合理不合理?Tproduct 到底是属于哪一层的对象?如果不合理,怎么样重构呢?