冰
冰冷的雨
Unregistered / Unconfirmed
GUEST, unregistred user!
假设每个员工只属于某一个部门,则部门与员工是1..n的关系,由此设计部门类TOrgan
和员工类TPersonnel如下:
TOrgan = class
private
FID: integer;
FName: string;
FParent: TOrgan
FEmployee: TPersonnelList
...
public
...
function GetEmployes: TPersonnelList
end;
TPersonnel = class
private
FID: integer;
FName: string;
FParent: TOrgan
...
public
...
end;
TPersonnelList = class
private
FItem[Index: Integer]: Personnel;
FCount: Integer;
...
public
...
function GetPersonnel(Index: integer): TPersonnel;
end;
个人感觉这种方案有几个缺点:
1、部门类TOrgan和员工类TPersonnel耦合太强;
2、三个类之间形成了循环引用,不符合OO的封装原则;
3、当组织机构比较复杂或者员工较多时,会占用大量的内存。
大家一般是怎么处理的?或者有什么好的想法请一起讨论。
和员工类TPersonnel如下:
TOrgan = class
private
FID: integer;
FName: string;
FParent: TOrgan
FEmployee: TPersonnelList
...
public
...
function GetEmployes: TPersonnelList
end;
TPersonnel = class
private
FID: integer;
FName: string;
FParent: TOrgan
...
public
...
end;
TPersonnelList = class
private
FItem[Index: Integer]: Personnel;
FCount: Integer;
...
public
...
function GetPersonnel(Index: integer): TPersonnel;
end;
个人感觉这种方案有几个缺点:
1、部门类TOrgan和员工类TPersonnel耦合太强;
2、三个类之间形成了循环引用,不符合OO的封装原则;
3、当组织机构比较复杂或者员工较多时,会占用大量的内存。
大家一般是怎么处理的?或者有什么好的想法请一起讨论。