Factory is a design pattern in common usage. Implement a ShapeFactory that can generate correct shape.

You can assume that we have only tree different shapes: TriangleSquare and Rectangle.

Example

  1. ShapeFactory sf = new ShapeFactory();
  2. Shape shape = sf.getShape("Square");
  3. shape.draw();
  4. >> ----
  5. >> | |
  6. >> | |
  7. >> ----
  8. shape = sf.getShape("Triangle");
  9. shape.draw();
  10. >> /\
  11. >> / \
  12. >> /____\
  13. shape = sf.getShape("Rectangle");
  14. shape.draw();
  15. >> ----
  16. >> | |
  17. >> ----

  1. /**
  2. * Your object will be instantiated and called as such:
  3. * ShapeFactory sf = new ShapeFactory();
  4. * Shape shape = sf.getShape(shapeType);
  5. * shape.draw();
  6. */
  7. interface Shape {
  8. void draw();
  9. }
  10.  
  11. class Rectangle implements Shape {
  12. public void draw() {
  13. System.out.println(" ----");
  14. System.out.println("| |");
  15. System.out.println(" ----");
  16. }
  17. }
  18.  
  19. class Square implements Shape {
  20. public void draw() {
  21. System.out.println(" ----");
  22. System.out.println("| |");
  23. System.out.println("| |");
  24. System.out.println(" ----");
  25. }
  26. }
  27.  
  28. class Triangle implements Shape {
  29. public void draw() {
  30. System.out.println(" /\\");
  31. System.out.println(" / \\");
  32. System.out.println("/____\\");
  33. }
  34. }
  35.  
  36. public class ShapeFactory {
  37. /**
  38. * @param shapeType a string
  39. * @return Get object of type Shape
  40. */
  41. public Shape getShape(String shapeType) {
  42. if (shapeType.toLowerCase().equals("square")) {
  43. return new Square();
  44. } else if (shapeType.toLowerCase().equals("triangle")) {
  45. return new Triangle();
  46. } else if (shapeType.toLowerCase().equals("rectangle")) {
  47. return new Rectangle();
  48. } else {
  49. return null;
  50. }
  51. }
  52. }

Shape Factory的更多相关文章

  1. [LintCode] Shape Factory 形状工厂

    Factory is a design pattern in common usage. Implement a ShapeFactory that can generate correct shap ...

  2. [LintCode] Toy Factory 玩具工厂

    Factory is a design pattern in common usage. Please implement a ToyFactory which can generate proper ...

  3. [LintCode]——目录

    Yet Another Source Code for LintCode Current Status : 232AC / 289ALL in Language C++, Up to date (20 ...

  4. 详细分析Orchard的Content、Drivers, Shapes and Placement 类型

    本文原文来自:http://skywalkersoftwaredevelopment.net/blog/a-closer-look-at-content-types-drivers-shapes-an ...

  5. Java设计模式——抽象工厂模式

    抽象工厂模式也是创建模式,可以把它理解成创建工厂的工厂,这种模式也是我们经常使用的.在抽象工厂中的接口是用来创建工厂的,每个生成的工厂又都可以按照工厂模式创建其他对象. 举例说明: 创建Shape接口 ...

  6. JAVA用geotools读写shape格式文件

    转自:http://toplchx.iteye.com/blog/1335007 JAVA用geotools读写shape格式文件 (对应geotools版本:2.7.2) (后面添加对应geotoo ...

  7. [Design Pattern] Factory Pattern 简单案例

    Factory Pattern , 即工厂模式,用于创建对象的场景,属于创建类的设计模式 . 下面是一个工厂模式案例. Shape 作为接口, Circle, Square, Rectangle 作为 ...

  8. Factory Pattern(工厂模式)

    1.工厂模式简介 工厂模式,专门负责将大量有共同接口的类实例化(用来生产对象).其定义为定义一个用于创建对象的接口,让子类决定实例化那一个类.工厂方法使一个类的实例化延迟到其子类. 工厂模式拥有以下几 ...

  9. 抽象工厂模式(Abstract Factory)

    (二)抽象工厂模式(Abstract Factory) 1.抽象工厂模式(Abstract Factory),提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 2.抽象工厂模式是 ...

随机推荐

  1. 《Linux内核分析》第一周——计算机是如何工作的?

    杨舒雯 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 课程内容 1.诺曼依体系 ...

  2. Linux内核分析(第三周)

    构造一个简单的linux系统menuOS. 一.简介 1.两把宝剑:中断-上下文的切换(保存现场和恢复现场) 进程-上下文的切换 2.linux-3.18.6 arch/x86目录下的代码是我们重点关 ...

  3. vs2013的安装及测试(第三周)

    1.打开同学给的安装包,发现如下问题: 2.因为是win7,提示需安装IE10.因为安装IE10必须要在安装好 server pack 1的情况下,所以从官方网站上下载好server pack 1,并 ...

  4. 使用Arduino驱动基于ST7533芯片的TFT屏

    在合宙通信买了一个1.8寸的TFT屏,驱动芯片是ST7533,本来打算使用Air800直接驱动,但由于其他原因,放弃了.于是尝试使用arduino驱动,为了屏幕刷新速度更快,采用硬件SPI. 硬件连接 ...

  5. [OSChina]VirtualBox 6.0.0 发布,改进对高端显示器的 HiDPI 支持--尝试一下

    VirtualBox 6.0.0 发布,改进对高端显示器的 HiDPI 支持 https://www.oschina.net/news/102838/virtualbox-6-0-0-released ...

  6. App 添加权限

    配置好了

  7. leetcode Database4

    一.Department Top Three Salaries The Employee table holds all employees. Every employee has an Id, an ...

  8. linux虚拟机安装中出现的问题

    当虚拟机加载镜像时,出现下面的错误: vmware 已将该虚拟机配置为使用 64 位客户机操作系统.但是,无法执行 64 位操作. 错误提示:已将该虚拟机配置为使用 64 位客户机操作系统.但是,无法 ...

  9. Delphi中快速修改变量名称

    鼠标左键选择需要修改的范围,左侧会出现一个同步编辑模式(Sync Edit Mode),快捷键:CTRL+SHIFT+J,它可以让我们清楚地编写或改写多个同一参数.

  10. 【笔记】自学ST表笔记

    自学ST表笔记 说实话原先QBXT学的ST表忘的差不多了吧...... 我重新自学巩固一下(回忆一下) 顺便把原先一些思想来源的原博发上来 一.ST表简介 ST表,建表时间\(O(n\cdot log ...