基于对象值实例化特定类

时间:2013-07-09 09:35:40

标签: java design-patterns

我为每种付款方式设有课程,例如: CashChequeCard。我必须根据对象值传递对象作为参数,我必须实例化相关的类。

我怎样才能做到这一点?建议我一个更好的设计

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);
}

2 个答案:

答案 0 :(得分:6)

您可以将枚举(现金/支票/卡)传递到工厂吗?

e.g。

Payment p = PaymentFactory.newInstance(PaymentMode.Cash);

并且在该方法中你会这样做:

switch(mode) {
   case PaymentMode.Cash:
      return new CashPayment();

   // ...
}

其中CashPaymentChequePayment等是Payment的子类。

答案 1 :(得分:2)