2013-07-05 6 views
1

Время от времени я сталкиваюсь с этой проблемой и не могу придумать окончательного решения.с использованием статической функции vs функция-член при создании или обновлении объекта

Например, у меня есть класс пользователя. Есть ли «рекомендуемый» способ создания этого объекта в базе данных? Например;

User user = new User(); 
user.name = "John"; 
user.lastname = "Doe"; 
user.CreateNewUser(); 

против

User user = new User(); 
user.name = "John"; 
user.lastname = "Doe"; 
User.CreateNewUser(user); 

который один будет предпочтительным способом и почему? Или это зависит от шаблона проектирования, который следует за проектом?

ответ

1

Правило большого пальца: Нестатический метод должен работать на основе (или изменения) состояния объектов. Если это не так, оно должно/быть статическим.

Из двух примеров, которые я бы предпочел? Ответ тоже не является.

Создание пользовательского объекта и его сохранение не является операцией пользовательского объекта, оно является частью сохранения. Так что я бы, наверное, что-то вроде

User user = new User(); 
user.name = "John"; 
user.lastname = "Doe"; 
PersistenceManager.CreateNewUser(user); 

Обратите внимание на статический метод PersistenceManager, как один не изменяет PersistenceManager каким-либо образом.