나는 다른 개발자가 조언을 구하거나 "당신 생각은 무엇입니까?"라고 생각합니다. this "하시기 바랍니다. 시간을내어 읽고 생각을 알려주세요.주문 클래스에 수수료/할인 목록을 통합하거나 아이템 라인으로 만들 수 있습니까?
설명보다 쉽게 표시 할 수 있지만 앱은 본질적으로 3 가지 주요 항목 인 항목, 주문 항목 및 주문이있는 판매 시점 앱과 같습니다.
항목 클래스는 데이터 저장소의 데이터입니다.
public class Item
: IComparable<OrderItem>, IEquatable<OrderItem>
{
public Int32 ID { get; set; }
public String Description { get; set; }
public decimal Cost { get; set; }
public Item(Int32 id, String description, decimal cost)
{
ID = id;
Description = description;
Cost = cost;
}
// Extraneous Detail Omitted
}
주문 항목 클래스는 주문의 항목 라인입니다. 나는 그것을 좋아하지
Order order = new Order();
// Fee
order.Add(new OrderItem(new Item("Admin Fee", 20), 1));
// Discount
order.Add(new OrderItem(new Item("Today's Special", -5), 1));
는 의미와 순서가있는 항목을 통해 반복에서 상속 기본 클래스를 만든다 : 당신이 주문에 수수료 또는 할인을 추가 할 때와 같이
public class OrderItem
: Item, IBillableItem, IComparable<OrderItem>, IEquatable<OrderItem>
{
// IBillableItem members
public Boolean IsTaxed { get; set; }
public decimal ExtendedCost { get { return Cost * Quantity; } }
public Int32 Quantity { get; set; }
public OrderItem (Item i, Int32 quantity)
: base(i.ID, i.Description, i.Cost)
{
Quantity = quantity;
IsTaxed = false;
}
// Extraneous Detail Omitted
}
현재는 간단합니다 리스트를 만들고, 적절한 세금을 계산하며, 2가있는 다른 Order-type 문서가 무엇이든지 다시 임 플리 멘팅하지 않고이 모든 것을 계산하는 기본 클래스로부터 상속받을 수있게합니다. 주문 유형 문서에 할인이없는 경우에는 $ value OrderItem을 추가하지 않는 것만 큼 쉽습니다.
유일한 문제는이 데이터를 표시하는 것입니다. 이 양식에는 판매 품목 (예 : 수수료/할인 제외)이 표시되어야하는 표가 있습니다. 마찬가지로 특정 수수료 및 특정 할인에 대한 텍스트 상자가 있습니다. 이 클래스의 필드에 해당 요소를 데이터 바인딩하여 사용자 (나)가 더 쉽게 사용할 수있게하고 싶습니다. IHasFees, IHasDiscounts을하고 주문을 구현할 수있다;
아이디어 발상
2 인터페이스를 가지고 둘 다 List의 단일 구성원을 갖습니다. 그렇게하면 판매 품목, 수수료 및 할인 만 이용할 수 있습니다 (필요한 경우 통제에 묶을 수 있음). 내가 좋아하지 않는 무엇
: 가 - 지금은 클래스 (AddItem을/AddFee/AddDiscount/제거 ...) 가 방법을 제거/3 가지 추가 기능을 가지고있다 - 나는 복제하고있어 (triplicating?) 기능은 모두 동일한 유형의 항목 목록에 불과하므로 각 목록마다 다른 의미가 있습니다.
올바른 경로에 있습니까? 나는 이것이 대부분의 사람들에게 (이 유형의 소프트웨어가 매우 일반적이라고 생각할 때) 해결 된 문제라고 생각한다.
IHasFees 및 IHasDiscounts 소리 hauntingly LOLCats 좋아해. –