Lintcode: 形状工厂

原创 2017年01月03日 20:37:17

 形状工厂

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

相关文章推荐

形状工厂

题目描述:工厂模式是一种常见的设计模式。实现一个形状工厂 ShapeFactory 来创建不同的形状类。这里我们假设只有三角形,正方形和矩形三种形状。 样例: 考察对类的设计和类的方法的实现。 由...

lintcode算法分析和解答

  • 2017年07月26日 18:31
  • 13.93MB
  • 下载

二叉树的中序遍历(lintcode)(递归和非递归)

题目来源:lintcode 原题链接:二叉树的中序遍历 题目: 给出一棵二叉树,返回其节点值的后序遍历。 您在真实的面试中是否遇到过这个题?  Yes 样例 给出一棵二叉树 ...
  • lyy_hit
  • lyy_hit
  • 2015年11月19日 22:04
  • 981

【LintCode】Pattern(C语言实现)

题目描述Given a sequence of n integers a1, a2, …, an, a 132 pattern is a subsequence ai, aj, ak such tha...
  • wr132
  • wr132
  • 2017年08月08日 20:17
  • 242

lintcode -合并k个排序链表

合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。 您在真实的面试中是否遇到过这个题?  Yes 样例 给出3个排序链表[2->4->nu...

分割回文串 II-LintCode

给定一个字符串s,将s分割成一些子串,使每个子串都是回文。 返回s符合要求的的最少分割次数。 样例 比如,给出字符串s = “aab”, 返回 1, 因为进行一次分割可以将字符串s分割成[“a...

lintcode阶梯训练第三关(九章)

595、Binary Tree Longest Consecutive Sequence 题目 Given a binary tree, find the length of the longest...

LintCode-第55题 比较字符串

比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母...

一起lintcode ------- 二分查找看这篇就够了

九章算法二分查找部分的ladder,前后刷了3,4遍(因为靠前,所以它被刷的次数最多了。)下面也该总结下了。本帖主要包括两方面的内容,一就是二分查找模板,二就是如何结合具体题型来使用二分查找模板。 ...

lintcode--区间求和 I

给定一个整数数组(下标由 0 到 n-1,其中 n 表示数组的规模),以及一个查询列表。每一个查询列表有两个整数 [start, end] 。 对于每个查询,计算出数组中从下标 start 到 end...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Lintcode: 形状工厂
举报原因:
原因补充:

(最多只允许输入30个字)