用于在oop

时间:2015-07-25 13:23:05

标签: c++ oop

我最近读过一篇关于管理者课程有多糟糕的文章,因为他们可以打破oop概念,而且大多数情况下我同意这篇文章。 如果我创建一个简单存储我的对象的管理器类怎么办?例如。如果我创建了一堆“文件” - 对象必须存储在“文件柜”中 - 在这种情况下代表我的“经理”的对象。其他对象(例如“employee”)可以从文件柜中取出文件并读取它们(而read()方法将在文件类中实现,并且很可能被命名为“presentToViewer”)。

所以在这个例子中我会有一个存储一些文件的经理,员工可以从经理那里获取文件。除了存储对象之外,管理器没有其他功能。这是不好的设计吗?如果是这样,我应该如何存储我的文件,如果不是这样,为什么设计不好?文件必须存储在某个地方,如果我没有在管理器中实现getFile()方法,我永远无法获得存储文件(尽管我读到并理解在大多数情况下getter / setter也不是一个好的设计模式)并与之交互(例如,调用presentToViewer())。

另一个例子: 如果这不是一个好的模式,我应该如何实现以下代码(在Employee类和c ++中,“my_signature_”是员工的唯一签名):

void Employee::writeDownClientBillNum(FileCabinet& file_cabinet,
                                      unsigned int client_id,
                                      unsigned int client_bill_num) const
{
  File& bill_file = file_cabinet.takeClientFile(client_id);
  bill_file.appendToBill(client_bill_num, my_signature_);
}

0 个答案:

没有答案