我很困惑。迷路了。自学C#,并对设置对象有疑问。我的第一次尝试创建了一个对象,让该对象自己处理所有事情。假设我有以下课程:
class Customer{
public string customerName{get; set;}
public Customer(string customerName){
this.customerName = customerName;
}
public int UpdateCustomer(){
///do stuff
}
}
然后从我的表单中,如果有人按下了更新按钮(仅作为示例),我只需创建一个新的Customer,设置名称,然后调用UpdateCustomer。看起来好像不是一个很好的流程,并且由于某种原因感觉不正确。
我应该直接从表单中调用UpdateCustomer吗?还是应该创建一个控制器来处理客户的所有事务?
答案 0 :(得分:1)
OOP中的对象被允许同时具有状态和行为。根本上没有错。例如,假设我们想对客户说“嗨”,那么传统的模型就是:
public void SayHello() { Console.WriteLine("Hi!"); }
在Customer
类上。还有很多其他示例。话虽如此,在很多情况下,将状态和行为分开是有利的。特别是,在使用依赖项注入时,它非常有用,因为通常不会注入“状态”对象,因此无法立即访问行为的依赖项。另外,某些架构模式(例如Actor-Model)禁止行为和状态的严格分离。
从根本上讲,(在软件工程中是如此)归结为针对在特定时间和地点有意义的内容进行设计。在没有看到UpdateCustomer
的实现的情况下,很难说出正确的答案,但这当然不是天生的错误。