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