ПРИМЕЧАНИЕ: извините за длинный вопрос!
Я пытаюсь понять некоторые ключевые области, лежащие в основе ориентации объекта, и я не мог так или иначе решить свой конкретный вопрос.
Допустим, у меня есть объект, полный прекрасных данных. Класс боб.
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; продвижение повторного использования кода, я полагаю. Моя проблема с этим - получить все данные из объектов, которые могут иметь личные данные без доступа.
Случай для второго варианта заключается в том, что метод воздействует только на данные, хранящиеся в объекте, и так и должно быть. Нет помех от других объектов.
Или ответ на мой вопрос - одна из тех «зависимых от случая» проблем? Если так, как вы узнаете, когда один метод предпочтительнее другого?