我是C#和OOP场景的新手,正在构建一个基础设施,这将帮助我更好地理解OOP的概念。这是我做的一个项目,用来测试我的课堂知识。有人能仔细研究一下并向我解释什么是更好的方法吗?为什么?
以下是我的C#程序中的对象:
object.
我希望deskClerk对象向Showroom对象添加一个客户。为此,我有以下选择:
我的问题是:
以上三种选择中的哪一种有声音logic?
发布于 2012-03-11 10:53:25
您必须计算出一个客户是否可以存在,而不是在展厅中的一部分,以及一个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;
}
}不要认为有两个地方可以添加客户是不正确的,但是DeskClerk仍然应该有这样做的责任。
然而,你可能误解了你的问题:-)希望它有帮助!
发布于 2012-03-11 11:25:52
我喜欢你处理这个问题的方法。所以读你的问题:
如何构造对象以及如何使用它们。作为一个程序员,我建议您使用第二个或第三个。
这里使用的第三个选项是我的示例代码:
class Stock { /*...*/ }
class Customer { /*...*/ }
class Order { /*...*/ }
class Showroom
{
protected List<Stock> StockList;
protected List<Customer> CustomerList;
protected List<Order> OrderList;
public Showroom()
{
StockList = new List<Stock>();
CustomerList = new List<Customer>();
OrderList = new List<Order>();
}
public virtual void addStock(Stock stock)
{
StockList.Add(stock);
}
public virtual void addCustomer(Customer customer)
{
CustomerList.Add(customer);
}
public virtual void addOrder(Order order)
{
OrderList.Add(order);
}
//...
}
class deskClerk : Showroom
{
public deskClerk()
{
CustomerList = new List<Customer>();
}
public override void addCustomer(Customer customer)
{
CustomerList.Add(customer);
}
//...
}所以我可以告诉你另一件事:
每次使用对象时,都要赋予每个对象他的角色和任务,然后每一个选择都取决于您想要使用的逻辑。选择一个你认为会有用的,并且适合你想要使用它的上下文。
https://stackoverflow.com/questions/9654047
复制相似问题