讨论:设计模式?组织机构与员工的关系
假设每个员工只属于某一个部门,则部门与员工是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、当组织机构比较复杂或者员工较多时,会占用大量的内存。
大家一般是怎么处理的?或者有什么好的想法请一起讨论。
[解决办法]
你这个部门与员工之间,除了需要记录所属关系之外,还有别的相互操作吗?
如果没有的话我觉得这些缺点其实无关紧要。