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 来创建不同的形状类。这里我们假设只有三角形,正方形和矩形三种形状。 样例: 考察对类的设计和类的方法的实现。 由...

D3形状(二):曲线工厂

给定一系列的点,d3.line除了可以将这些点转换为折线路径外,还可以利用曲线工厂,将这些点转换为各类曲线,并能调节这些曲线的参数,改变曲线的形态。

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

工厂模式的形态

工厂模式的形态 工厂模式主要用一下几种形态: 1:简单工厂(Simple Factory)。 2:工厂方法(Factory Method)。 3:抽象工厂(Abstract Factory)。...

图形工厂论文

我竟然敲着敲着也敲出了400多行的代码,不错不错,值得表扬^_^ 1前言 工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可...

简单工厂、工厂、抽象工厂

简单工厂模式:专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。它又称为静态工厂方法模式,属于类的创建型模式。 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪...

Lintcode 木材加工

有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为 k。当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度。  注意事项 木头长...

工厂模式(简单工厂、工厂和抽象工厂) C++

今天开始这个系列之前,心里有些恐慌,毕竟园子里的高手关于设计模式的经典文章很多很多,特别是大侠李会军、吕震宇 老师的文章更是堪称经典。他们的文笔如行云流水,例子活泼生动,讲解深入浅出。好在他们都是用C...

工厂模式(简单工厂、工厂方法、抽象工厂)

什么是工厂模式?  顾名思义,用工厂去实例化对象,用工厂方法代替new操作。   工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式  从设计模式的类型上来说,简单工厂模式是属于创建...

lintcode triangle 数字三角形

问题描述lintcode笔记代码1设置buff[i][j]为:以元素(i,j)结尾的最小路径和。 buff[i][j]应该是buff[i-1][j-1]和buff[i-1][j]中的较小值再加上当前...

LintCode-最大正方形&最大矩形

最大正方形 描述 在一个二维01矩阵中找到全为1的最大正方形 样例 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 返回 4 分析一下样例, 位置3,5的最大正方形 ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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