C++工厂模式
#include <iostream>
using namespace std;
class Person
{
protected:
string name;
string id;
public:
Person(string name, string id):name(name),id(id){};
virtual void print()
{
cout << "---INFO---" << endl;
cout << "Name := " << name << endl;
cout << "ID := " << id << endl;
cout << "---END---" << endl;
}
};
class Student:public Person
{
protected:
string major;
double gpa;
public:
Student(string name, string id, string major, double gpa):Person(name,id), major(major), gpa(gpa){};
virtual void print()
{
cout << "---INFO---" << endl;
cout << "Name := " << name << endl;
cout << "ID := " << id << endl;
cout << "Major := " << major << endl;
cout << "GPA := " << gpa << endl;
cout << "---END---" << endl;
}
};
Person* create(string name, string id, string major = "NULL", double gpa = 0)
{
if(major == "NULL" && gpa == 0){
return new Person(name, id);
}
else{
return new Student(name, id, major, gpa);
}
}
int main()
{
Person* p = create("Liu", "3535", "CS", 4.3);
p->print();
system("pause");
return 0;
}