【发布时间】:2011-08-01 14:18:37
【问题描述】:
我有一个名为 Chicken 的类,在 Chicken 中我有一些方法, 所以在另一个我实例化和调用Chicken方法的类中,我可能会做这样的事情:
Chicken chicken = new Chicken("Name","Description")
public void UpdateChicken(Chicken chicken)
{
chicken.Update(chicken);
}
以上是否正常或是否存在问题,如果是,最好有另一个类,例如 ChickenCalculations 并执行以下操作:
public void UpdateChick(Chicken chicken)
{
ChickenCalculations.Update(chicken);
}
这是一个实现:
Chicken chicken = new Chicken("Bob","Coolest Chicken", 4, 123, 5, 388, true, false, true);
Chicken anotherChicken = new Chicken()
anotherChicken.Update(chicken);
chicken.Update(chicken)
这是一个更实际的例子,而不是使用鸡:
public class AirlineBooking
{
int BookingId {get;set;}
string Name {get;set;}
string Description {get;set;}
decimal Price {get;set;}
decimal Tax {get;set;}
string seat {get;set;}
bool IsActive {get;set;}
bool IsCanceld {get;set;}
public AirlineBooking(string name, string description, decimal price,
decimal tax, string seat, bool isActive, bool isCanceled)
{
Name = name;
Description = description;
Price = price;
Tax = tax;
Seat = seat;
IsActive = isActive;
IsCanceled = isCanceled;
}
public Update(AirlineBooking airlineBooking, int id)
{
//Call stored proc here to update booking by id
}
public class BookingSystem
{
//Create new booking
AirlineBooking booking = new AirlineBooking("ticket-1",
"desc",150.2,22.0,
"22A",true, false);
//Change properties and update.
booking.Name ="ticket-2";
booking.Description = "desc2";
booking.Price = 200.52;
booking.Tax = 38.50;
public void UpdateBooking(AirlineBooking booking, int id)
{
/* This is the meat of the question, should the passed in booking to
update itself or should I have a Service Class , such as
AirlineBookingOperations with an update method. */
booking.Update(booking,id);
}
}
}
【问题讨论】:
-
为什么将 chicken 本身传递给 Update 函数?
chicken.Update()还不够吗? -
chicken.Update()有什么问题?顺便说一句,您可能想提供一个更有意义的示例。当您处于无意义的领域时,很难讨论设计决策。 -
@Xaisoft:但是更新鸡是什么意思?如果不知道这意味着什么,很难说鸡是否可以自我更新。
-
要记住的最重要的事情是不要在孵化之前更新您的鸡。
标签: c# .net oop design-patterns class-design