00001 00004 class RecordFactory 00005 { 00006 private : 00007 map<RECORD_TYPE_en, Record* > m_oMapRecordReference; 00008 00009 public : 00010 RecordFactory() 00011 { 00012 m_oMapRecordReference[CAR] = new CarRecord("Ferrari", 5050); 00013 m_oMapRecordReference[BIKE] = new BikeRecord("Yamaha", 2525); 00014 m_oMapRecordReference[PERSON] = new PersonRecord("Tom", 25); 00015 } 00016 00017 ~RecordFactory() 00018 { 00019 delete m_oMapRecordReference[CAR]; 00020 delete m_oMapRecordReference[BIKE]; 00021 delete m_oMapRecordReference[PERSON]; 00022 } 00023 00024 Record* CreateRecord(RECORD_TYPE_en enType) 00025 { 00026 return m_oMapRecordReference[enType]->Clone(); 00027 } 00028 };