NewsBot
1
I'm trying to implement a factory method in our application. Do you thing that this kind of implementation is a good one ?
class Person
{
public:
***Person(PersonData personData);
***...
private:
***int m_identifier;
***std::string m_name;
};
class Employee : public Person
{
public:
***Employee(PersonData personData);
***...
private:
***float m_hourlyWage;
};
class Boss : public Person
{
public:
***Boss(PersonData personData);
***...
private:
***float m_annualSalary;
***float m_bonus;
};
struct PersonData
{
***int type;
***int identifier;
***std::string name;
***float hourlyWage;
***float annualSalary;
***float bonus;
};
class Factory
{
public:
***static Person* CreatePerson(PersonData personData);
};
Person* Factory::CreatePerson(PersonData personData)
{
***switch (personData.type)
***{
******case PersonType_Employee:*
*********return new Employee(personData);
*********break;
******case PersonType_Boss:*
*********return new Boss(personData);
*********break;
***
******default:
*********throw std::invalid_argument("...");
*********break;
***}
}
More...
View All Our Microsoft Related Feeds
class Person
{
public:
***Person(PersonData personData);
***...
private:
***int m_identifier;
***std::string m_name;
};
class Employee : public Person
{
public:
***Employee(PersonData personData);
***...
private:
***float m_hourlyWage;
};
class Boss : public Person
{
public:
***Boss(PersonData personData);
***...
private:
***float m_annualSalary;
***float m_bonus;
};
struct PersonData
{
***int type;
***int identifier;
***std::string name;
***float hourlyWage;
***float annualSalary;
***float bonus;
};
class Factory
{
public:
***static Person* CreatePerson(PersonData personData);
};
Person* Factory::CreatePerson(PersonData personData)
{
***switch (personData.type)
***{
******case PersonType_Employee:*
*********return new Employee(personData);
*********break;
******case PersonType_Boss:*
*********return new Boss(personData);
*********break;
***
******default:
*********throw std::invalid_argument("...");
*********break;
***}
}
More...
View All Our Microsoft Related Feeds