Lintcode: 形状工厂

来源:互联网 发布:山顶洞人 知乎 编辑:程序博客网 时间:2024/05/12 21:05

 形状工厂

工厂模式是一种常见的设计模式。实现一个形状工厂 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();    }};

0 0
原创粉丝点击