我为每种付款方式设有课程,例如: Cash
,Cheque
,Card
。我必须根据对象值传递对象作为参数,我必须实例化相关的类。
我怎样才能做到这一点?建议我一个更好的设计
public interface CollectionInfo {
//Code Goes here
}
public class Cash implements CollectionInfo {
//Code goes here
}
public class CollectionFactory {
public void newInstance(Enum<CollectionMode> collectionMode) {
}
}
public interface Receipts {
public Receipt createReceipt(String Amount, /*(Here i need to pass parameter of object either cash ,Cheque or card),*/Date date);
}
答案 0 :(得分:6)
您可以将枚举(现金/支票/卡)传递到工厂吗?
e.g。
Payment p = PaymentFactory.newInstance(PaymentMode.Cash);
并且在该方法中你会这样做:
switch(mode) {
case PaymentMode.Cash:
return new CashPayment();
// ...
}
其中CashPayment
,ChequePayment
等是Payment
的子类。
答案 1 :(得分:2)