zoukankan      html  css  js  c++  java
  • lintcode:形状工厂

    题目

    工厂模式是一种常见的设计模式。实现一个形状工厂 ShapeFactory 来创建不同的形状类。这里我们假设只有三角形,正方形和矩形三种形状。

    样例
    ShapeFactory sf = new ShapeFactory();
    Shape shape = sf.getShape("Square");
    shape.draw();
    >>  ----
    >> |    |
    >> |    |
    >>  ----
    
    shape = sf.getShape("Triangle");
    shape.draw();
    >>   /
    >>  /  
    >> /____
    
    shape = sf.getShape("Rectangle");
    shape.draw();
    >>  ----
    >> |    |
    >>  ----
    解题
    直接draw方法
    /**
     * Your object will be instantiated and called as such:
     * ShapeFactory sf = new ShapeFactory();
     * Shape shape = sf.getShape(shapeType);
     * shape.draw();
     */
    interface Shape {
        void draw();
    }
    
    class Rectangle implements Shape {
        // Write your code here
        public void draw(){
            System.out.println(" ----");
            System.out.println("|    |");
            System.out.println(" ----");    
        }
    }
    
    class Square implements Shape {
        // Write your code here
        public void draw(){
            System.out.println(" ----");
            System.out.println("|    |");
            System.out.println("|    |");
            System.out.println(" ----");    
        }
        
    }
    
    class Triangle implements Shape {
        // Write your code here
        public   void draw(){
            System.out.println("  /\");
            System.out.println(" /  \");
            System.out.println("/____\");  
        }
    }
    
    public class ShapeFactory {
        /**
         * @param shapeType a string
         * @return Get object of type Shape
         */
        public Shape getShape(String shapeType) {
            // Write your code here
            if(shapeType.equals("Square")){
                return new Square();
            }
            if(shapeType.equals("Rectangle")){
                return new Rectangle();
            }
            if(shapeType.equals("Triangle")){
                return new Triangle();
            }
            return null;
        }
    }


  • 相关阅读:
    C++头文件,预处理详解
    在VS2013中查看C/C++预处理后的文件
    使用apache.lang包安全简洁地操作Java时间
    FileInputStream 和 FileOutputStream
    【转】彻底搞清计算结构体大小和数据对齐原则
    NDK学习笔记-gdb调试
    NDK学习笔记-gdb调试
    NDK学习笔记-多线程与生产消费模式
    NDK学习笔记-多线程与生产消费模式
    Android-Makefile
  • 原文地址:https://www.cnblogs.com/bbbblog/p/5650691.html
Copyright © 2011-2022 走看看