OJ lintcode 形状工厂

工厂模式是一种常见的设计模式。实现一个形状工厂 ShapeFactory 来创建不同的形状类。这里我们假设只有三角形,正方形和矩形三种形状。

OJ lintcode 形状工厂_第1张图片
image.png
/**
 * 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;

    }
};

你可能感兴趣的:(OJ lintcode 形状工厂)