这是正确的OOP设计吗?静态函数返回对象的实例

Jar*_*man 1 c# oop design-patterns

我有一个代表人的数据库表.我正在编写一个将使用这个类的WebService,我不希望每次都能得到所有人.这是"正确"的方法吗?是否有某种设计模式接近于此?

这是什么我实际上做了简单化例如,所有在每个属性的制定者会保存到数据库中.

namespace Example
{
    class Person
    {
        private int _id;
        private string _name;
        private int _age;

        public int ID { get { return _id; } set { _id = value; } }
        public string Name { get { return _name; } set { _name = value; } }
        public int Age { get { return _age; } set { _age = value; } }

        private Person(int id)
        {
            _id = id;
            // Query database and set values
        }

        public static Person GetPersonByID(int id) {
            return new Person(id);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

nvo*_*igt 5

在这种情况下,我会废弃该方法.当用户不直观时,用户无法做任何事情.拥有构造函数是正常的操作行为.

一般来说,这可能是一个模式,如果这个功能做一些事情,用不能在构造函数来完成.

就个人而言,我会从人类中删除所有逻辑.作为一个人,这是班级的工作.一个人可以不包含任何数据库.如果要从数据源加载人员,请创建一个数据源类,并让其中一个方法返回一个人.

class Person
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

class DataSource
{
    public void Save(Person p)
    {
       // save person to database
    }

    public Person LoadById(int id)
    {
       // load person from database
    }
}
Run Code Online (Sandbox Code Playgroud)