有这样一个简单应用: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 到底是属于哪一层的对象?如果不合理,怎么样重构呢?
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 到底是属于哪一层的对象?如果不合理,怎么样重构呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货