注意:对于长问题抱歉!对象应该将自己写入文件中,还是另一个对象对其执行I/O操作?
我想了解面向对象背后的一些关键领域,我无法以某种方式决定我的特定问题。
比方说,我有一个充满了可爱数据的对象。班bob。
Bob myBob = new Bob("This string is data");
比方说,我想myBob的内容保存到一个XML文件(bob.xml)
我是否应该在鲍勃的对象行为写的内容了,或者我应该做myBob这个?
案例1:对象法案
Writer myWriter = new Writer(myBob, "C:\\bob.xml");
案例2:保存方法
myBob.Save("C:\\bob.xml");
有些人是偏袒的选择之一,因为它意味着如果写入文件的代码是改变了,它不需要在每个Save方法中更新;促进代码重用我想。我的问题是从没有访问者的私有数据中获取所有数据。
选项二的情况是,该方法只对该对象所持有的数据起作用,这就是它应该的方式。不受其他物体的干扰。
或者是我的问题之一,这些“案件依赖”问题的答案?如果是这样,你怎么知道什么时候一种方法比另一种更受欢迎?
那么,情况2可能是正确的,这实际上取决于...在OO设计中没有明确的是或否。例如,你也可以考虑你的对象实现一个IWriter接口的场景。 – 2009-05-23 14:24:34
@divo:总是有例外,那就是设计的本质。这不应该被明确地呼吁。 (这也是为什么我使用“一般”来限定我的声明的原因。) – 2009-05-23 15:22:35
反序列化对象的建议策略是什么?如果传入一个BinaryReader对象并让这个类反序列化它会好吗? – 2009-05-24 03:56:33