我有一个对象人,我在前端的几种方法中使用。我该怎么做到最好?每次都创建新实例?还是公开的?或者是其他东西?对我来说似乎是一个非常基本的问题。
public class Employee
{
public void DeleteEmployee(int employeeId)
{
......
}
public void UpdateEmployee(int employeeId)
{
......
}
}
然后在前端(我就是这样做的):
protected void OnDelete(object sender, EventArgs e)
{
Employee emp = new Employee();
emp.DeleteEmployee(empId);
}
protected void OnUpdate(object sender, EventArgs e)
{
Employee emp = new Employee();
emp.UpdateEmployee(empId);
}
答案 0 :(得分:2)
我认为你所寻找的就是我所谓的员工经理。执行此操作的两种常用方法是使用静态方法创建单独的EmployeeManager对象以执行操作,或将静态方法添加到Employee对象。关于哪种方法是首选方法存在争议。但是,常见的思维过程是Employee实例不应该知道它是如何持久化的。所以结果看起来要么......
EmployeeManager.DeleteEmployee(empId);
...或
Employee.DeleteEmployee(empId);
答案 1 :(得分:1)
制作方法static:
public static void DeleteEmployee(int employeeId)
{
...
}
直接在Employee
:
protected void OnDelete(object sender, EventArgs e)
{
Employee.DeleteEmployee(empId);
}
答案 2 :(得分:0)
通常我会说员工不应该负责创建/更新/删除自己。数据上下文(或存储库,或其他)应该承担这一责任。
所以你会有类似的东西(袖口,双重检查拼写/语法)
EmployeeRepository //Normally Inherits a BaseRepository and/or implements an IRepository<T>
{
public void Create([some parameters here]) {...}
public void Delete(Employee employee) {...}
public Employee Find(Expression<Func<Employee, bool>> predicate) {...}
//other methods...
}
你的代码会调用
static void Main()
{
EmployeeRepository Employees = new EmployeeRepository();
Employee bob = Employees.Create("Bob");
Employee fired = Employees.Find(e => e.Id == whatever);
Employees.Delete(fired);
}