關於此代碼有幾件事。
所有屬性和類都應該是C#中的PascalCase。 theOrder應該是Order,因爲它的類型不是實例,如果你喜歡,你可以調用一個實例theOrder。 如果您將它們設置爲私有並且具有空的構造函數,則無法實例化Order類的屬性。另外你將如何使用獲得者?
您將需要構造函數來初始化您的屬性。 而且創建接口和抽象類也是很好的OOP。 首先,我的代碼將是這樣的:
public interface IPerson
{
string Name { get; }
int Id { get; }
}
public interface ISalesSubject : IPerson
{
IDictionary<int, IOrder> Orders { get; }
}
public abstract class SalesSubject: ISalesSubject
{
protected SalesSubject(string name, int id)
{
this.Name = name;
this.Id = id;
this.Orders = new Dictionary<int, IOrder>();
}
protected SalesSubject(string name, int id, IDictionary<int, IOrder> orders)
{
this.Name = name;
this.Id = id;
this.Orders = orders;
}
public string Name { get; protected set; }
public int Id { get; protected set; }
public IDictionary<int, IOrder> Orders { get; protected set; }
public virtual void AddOrder(int itemId, IOrder order)
{
if (!this.Orders.ContainsKey(itemId))
{
this.Orders.Add(itemId, order);
}
}
public virtual void RemoveOrder(int itemId, IOrder order)
{
this.Orders.Remove(itemId, order);
}
}
public class Client : SalesSubject
{
public Client(string name, int id)
: base(name, id)
{
this.Orders = new Dictionary<int, IOrder>();
}
public Client(string name, int id, IDictionary<int, IOrder> orders)
: base(name, id, orders)
{
this.Orders = orders;
}
}
public class DeliveryReceptionist : SalesSubject
{
public DeliveryReceptionist(string name, int id)
: base(name, id)
{
this.Clients = new Dictionary<int, Client>();
}
public DeliveryReceptionist(string name, int id, IDictionary<int, IOrder> orders)
: base(name, id, orders)
{
this.Clients = new Dictionary<int, Client>();
}
public DeliveryReceptionist(string name, int id, IDictionary<int, IOrder> orders, IDictionary<int, Client> clients)
: base(name, id, orders)
{
this.Clients = clients;
}
public DeliveryReceptionist(string name, int id, IDictionary<int, Client> clients)
: base(name, id)
{
this.Clients = clients;
}
public IDictionary<int, Client> Clients { get; set; }
public void AddClient(int clientId, Client client)
{
if (!this.Clients.ContainsKey(clientId))
{
this.Clients.Add(clientId, client);
}
}
public void RemoveClient(int clientId, Client client)
{
this.Clients.Remove(clientId, client);
}
}
public interface IOrder
{
int ItemID { get; set; }
double Price { get; set; }
double Number { get; set; }
}
public class Order : IOrder
{
public Order(int itemId, double price, double number)
{
this.ItemId = itemId;
this.Price = price;
this.Number = number;
}
public int ItemId { get; set; }
public double Price { get; set; }
public double Number { get; set; }
}
爲什麼你需要的物品class.Static類是反模式談論encapsualtion和良好的OOP.They時,可以從任何地方,其含量變化進行訪問如果是公共訪問修飾符。
你已經有很棒的OOP風格。但是我想問一下你想創建哪個系統的一部分。我的意思是,這與訂單處理有關,因此訂單和客戶已經存儲,交付接待員需要通過此訂單並將其發送給客戶。 或者顧客去購物並選擇他想購買的產品? 系統的各個部分將以不同的方式實施。 –