注意:很抱歉这个问题很长!
我试图理解面向对象背后的一些关键领域,我无法以某种方式决定我的特定问题.
假设我有一个充满可爱数据的对象.班级鲍勃.
Bob myBob = new Bob("This string is data");
Run Code Online (Sandbox Code Playgroud)
假设我想将myBob的内容保存到xml文件(bob.xml)
我是否应该在bob上写一个对象来写出内容,或者我应该让myBob这样做吗?
案例1:对象行为
Writer myWriter = new Writer(myBob, "C:\\bob.xml");
Run Code Online (Sandbox Code Playgroud)
案例2:保存方法
myBob.Save("C:\\bob.xml");
Run Code Online (Sandbox Code Playgroud)
有些人支持选项一,因为这意味着如果更改了编写文件的代码,则不需要在每个Save方法中更新; 我想,促进代码重用.我的问题是从对象中获取所有数据,这些对象可能没有访问者的私有数据.
选项二的情况是该方法仅对对象持有的数据起作用,这就是它应该的方式.不受其他物体的干扰.
或者是我的问题的答案之一是"案例依赖"问题?如果是这样,你怎么知道何时一种方法优先于另一种?