Oop 关于面向对象设计的建议
我想要一些关于OOD查询的帮助 假设我有以下Oop 关于面向对象设计的建议,oop,Oop,我想要一些关于OOD查询的帮助 假设我有以下Customer类: public class Customer { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } 它是客户相关数据的简单占位符。接下来是用于获取客户的CustomerFactory: public static class CustomerFact
Customer
类:
public class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
它是客户相关数据的简单占位符。接下来是用于获取客户的CustomerFactory
:
public static class CustomerFactory
{
public static Customer GetCustomer(int id)
{
return null; // Pretend this goes off to get a customer.
}
}
现在,如果我想编写一个名为UpdateCustomer(Customer)
的例程,有人能建议我把这个方法放在哪里吗
显然,我不想使用Customer
类,因为这违反了SRP(单一责任原则),我也不认为将方法附加到CustomerFactory
类是个好主意,因为它的唯一作用是从数据库中获取客户
看起来我需要另一个类,但我不知道该怎么命名
干杯。
Jas.你所说的工厂根本不是工厂。这是一个存储库 基于一组参数,处理共享公共接口或类层次结构的各种类的实例化 A处理数据的检索和管理
存储库中肯定会有
UpdateCustomer(Customer-Customer)
方法以及GetCustomer(int-id)
方法。您的UpdateCustomer例程不会放在DAL(数据访问层)中吗。您应该定义一个类来处理对数据库的插入或更新,然后将客户对象传递给它
您可以编写DAL类来处理所有这些问题,但我认为将其存储在CustomerFactory类中没有任何问题,尽管如前所述,它并不是一个真正的工厂。在创建存储库的过程中,您做得更多。这样做:
public interface ICustomerRepository
{
Customer SelectCustomer(int id);
void UpdateCustomer(Customer customer);
void DeleteCustomer(int id);
void CreateCustomer(Customer customer);
}
然后创建该接口的具体实现(该接口实际上只是因为它是针对接口编程的良好实践——尽管我建议您保留它,但您可以跳过它)。啊,太好了。这就是我给自己命名CustomerFactory而不是CustomerRepository的地方。这似乎已经更好了。为了将来的参考,没有必要将这个问题标记为社区wiki:-)