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();     } };

简单工厂模式

简单工厂模式属于创建型模式 创建型模式 : 对类的具体实例化细节进行封装,能够将软件模块中对象的创建和使用分离开来,从而降低系统的耦合度,方便软件后期的扩展与修改。简单工厂模式的定义:定义一个工厂类...
  • qq_26850187
  • qq_26850187
  • 2016年11月29日 15:19
  • 618

工厂三兄弟之简单工厂模式(四)

4 方案的改进       Sunny软件公司开发人员发现在创建具体Chart对象时,每更换一个Chart对象都需要修改客户端代码中静态工厂方法的参数,客户端代码将要重新编译,这对于客户端而言,违反了...
  • LoveLion
  • LoveLion
  • 2013年07月11日 14:55
  • 15432

POJ1017 装箱问题

总时间限制: 1000ms 内存限制: 65536kB描述一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*...
  • Ada_W
  • Ada_W
  • 2015年03月07日 16:50
  • 399

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

595、Binary Tree Longest Consecutive Sequence 题目 Given a binary tree, find the length of the longest...
  • Dashuai_Liu
  • Dashuai_Liu
  • 2017年03月28日 10:54
  • 592

LintCode数学题总结

LC上有一些标记为mathematics的题目,基本就是纯数学题或者数字题,也是需要掌握的。 517. Ugly Number 丑数,是一个正数,并且因子只包含2、3、5。此外,1也算丑数。0和负数都...
  • luoshengkim
  • luoshengkim
  • 2016年08月09日 10:58
  • 992

LintCode链表题总结

由于链表本身结构的单一性,链表的题目很少会有很大的变种,基本都是围绕几个基本的考点出题目。所以链表的题目比较好掌握,但是链表的题目又不太容易一次就AC通过,由于边界情况未考虑、空指针(比如head.n...
  • luoshengkim
  • luoshengkim
  • 2016年06月01日 14:08
  • 2891

Lintcode题目总结

方法技巧题: Complete Binary Tree: http://www.lintcode.com/en/problem/complete-binary-tree/ 用一个名为nodes的vec...
  • xero10
  • xero10
  • 2016年05月19日 10:36
  • 578

LintCode数组题总结

做算法题的时候,几乎不可避免要跟数组打交道。在LintCode上数组那一章有这么一些题目: 1)547. Intersection of Two Arrays 比较简单。要求找到2个数组的...
  • luoshengkim
  • luoshengkim
  • 2016年06月02日 23:16
  • 1807

lintcode,单词接龙

给出两个单词(start和end)和一个字典,找到从start到end的最短转换序列 比如: 每次只能改变一个字母。 变换过程中的中间单词必须在字典中出现。 注意事项 如果没有转换序列则返...
  • zsjmfy
  • zsjmfy
  • 2016年12月22日 14:23
  • 595

主元素(LintCode)

题目来源:LintCode 原题地址:http://www.lintcode.com/zh-cn/problem/majority-number/ 题目: 给定一个整型数组,...
  • lyy_hit
  • lyy_hit
  • 2015年10月30日 15:38
  • 627
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Lintcode: 形状工厂
举报原因:
原因补充:

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