工厂模式是一种常见的设计模式。实现一个形状工厂 ShapeFactory 来创建不同的形状类。这里我们假设只有三角形,正方形和矩形三种形状。
/**
* Your object will be instantiated and called as such:
* ShapeFactory* sf = new ShapeFactory();
* Shape* shape = sf->getShape(shapeType);
* shape->draw();
*/
class Shape {
public:
virtual void draw() const = 0;
};
class Rectangle : public Shape {
// Write your code here
public:
void draw() const {
cout << " ----" << endl;
cout << "| |" << endl;
cout << " ----" << endl;
}
};
class Square : public Shape {
// Write your code here
public:
void draw() const {
cout << " ----" << endl;
cout << "| |" << endl;
cout << "| |" << endl;
cout << " ----" << endl;
}
};
class Triangle : public Shape {
// Write your code here
public:
void draw() const {
cout << " /\\ " << endl;
cout << " / \\ " << endl;
cout << "/____\\ " << endl;
}
};
class ShapeFactory {
public:
/**
* @param shapeType a string
* @return Get object of type Shape
*/
Shape* getShape(string& shapeType) {
// Write your code here
Shape* shape;
if (shapeType == "Rectangle") {
//
shape = new Rectangle();
return shape;
}
if (shapeType == "Square") {
//
shape = new Square();
return shape;
}
if (shapeType == "Triangle") {
//
shape = new Triangle();
return shape;
}
return nullptr;
}
};