2013-07-09 9 views
1

예를 들어 각 지불 모드에 대한 클래스가 있습니다. 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); 
} 
+2

정적 공장 ????? – NINCOMPOOP

+2

아마도 그것은 나뿐이지만, 나는 당신이 묻고있는 것에 완전히 혼란스러워합니다. 어쩌면 시도하고있는 코드 및/또는 의사 코드를 포함해야합니다. –

+0

* "감사합니다 비제이"* sigs를 포함하지 마십시오. 질문에서, 그들은 소음이다. 또한 제목에 주요 태그를 추가 할 필요가 없습니다. –

답변

6

열거 형 (현금/수표/카드)을 공장에 전달할 수 있습니까?

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

및 그 방법에서 당신이 할 것 : 등 CashPayment, ChequePaymentPayment의 서브 클래스

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

    // ... 
} 

.

+0

아니면 하이퍼 다이내믹하고 싶다면, 어떤 명명 규칙과'Class.forName'. 하지만 공장은 아마 더 좋은 방법 일 것입니다 ... –

+0

예. 내가 공용 클래스 현금 CollectionInfo 구현 { 이 \t \t // 코드가 간다} 문제를 너무 많이 –

+0

@BrianAgnew 공용 인터페이스 CollectionInfo을 복잡하게하고 싶지 않았다 공용 클래스 { \t은 // 코드 간다} 을 CollectionFactory { \t 공개 무효 newInstance와 (열거 collectionMode) { \t }} , 공용 인터페이스 영수증 { \t \t 공공 영수증 createReceipt (문자열의 양,/* (여기서 내가 확인하거나 카드, 개체 중 현금의 매개 변수를 전달해야합니다) */날짜 일) } – VijayM

관련 문제