我是 C# 和 OOP 场景的新手,正在构建一个基础架构,以帮助我更好地理解 OOP 概念。这是我为了测试我的类知识而做的一个项目。有人可以复习一下并向我解释什么是更好的方法以及为什么吗?
以下是我的 C# 程序中的对象:
- deskClerk [具有返回 Customer 对象的 addCustomer 方法。]
- 订单
- 股票
- 客户
- 效用
- 陈列室 [包含客户、库存和订单列表 - 所有列表 私有(private)的。 Showroom 也有 addCustomer 方法]
我希望 deskClerk 对象将客户添加到 Showroom 对象。为此,我有以下选择:
- 我可以将 Showroom 对象传递给 deskClerk,然后利用 在 Showroom 中添加客户的 addCustomer 方法。
- 我可以直接将客户添加到 Showroom,因为 Showroom 对象已有 addCustomer 方法。
- 我可以从 Showroom 继承 deskClerk 对象,在这种情况下 deskClerk 将能够使用 陈列室的 addCustomer 方法。
我的问题是:
- 以上三个选项中哪个逻辑合理?
- 陈列室甚至应该有一个 addCustomer 方法吗?陈列室 应该只是库存、客户和订单列表的存储对象,对吧?
最佳答案
您必须弄清楚客户是否可以在不参与陈列室的情况下存在,以及 DeskClerk 是否可以在不参与陈列室的情况下四处走动。
如果是这样的话我会做这样的事情
public class Showroom {
public DeskClerk Clerk { get; private set; }
public List<Customer> Customers { get; set; }
[...]
}
如果没有陈列室,前台文员就没有多大用处,因此在其构造函数中将陈列室设置为依赖项:
public class DeskClerk {
private ShowRoom { get; set; }
public DeskClerk(ShowRoom showRoom) {
ShowRoom = showRoom;
}
public Customer AddCustomer(Customer customer) {
//do stuff with customer object
ShowRoom.Add(customer);
return cutomer;
}
}
不要认为有 2 个位置来添加客户是正确的,但 DeskClerk 仍然应该有这样做的责任。
但是,可能误解了您的问题 :-) 希望对您有所帮助!
关于c# - 传递一个对象,继承它或使用直接方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9654047/