如果我有一个名为Payment的类,它是另一个名为Card的类的超类,我如何将该类加入另一个验证卡是否有效的类。 我的UML图是这样的:
Payment<---------Card
我想过两种方法,但我想知道哪一种方法是正确的:
1)带有关联的模型,以检查信用卡是否有效,但不将其加入paymentCard:
Card_list---1--------------1*---<>Card
所以在我的课程卡片中,我称之为:
class paymentCard extends Payment
{
public authorized() ---abstract method
{
if card.verified(card_number) return true; ---here I call the card class
else return false;
}
}
2)我已经读过我可以使用聚合,但我有点怀疑如何使用它:
class paymentCard extends Payment
{
Card creditcard //aggregation
public authorized()
{
creditcard=new Card(numberCard)
if creditcard.verified() return true;
else return false;
}
}
两种形式中的哪一种更好?对我来说,第一个看起来像对外部类的查询,也可以是数据库,而第二个我不太确定它
有任何评论吗?
答案 0 :(得分:1)
有一天,您可能想要其他付款方式。
IMO,付款有pay_method,可以是ByCard,By ...,所以:
class Payment
{
protected PaymentMethodoption;
}
abstract class PaymentMethod
{
public abstract bool authorized();
}
class PaymentByCreditCard : PaymentMethod
{
public override bool authorized() { return card.verified(card_number); }
}
答案 1 :(得分:0)
嗯,你基本上回答了自己的问题。关键问题是:创建信用卡对象的成本有多高?可能不只是像你在第二个例子中那样传递一个数字,这意味着你可能会将它们存储在其他地方。