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


  • 相关阅读:
    第07组 Alpha冲刺(2/6)
    第07组 Alpha冲刺(1/6)
    第07组 团队Git现场编程实战
    团队项目-需求分析报告
    团队项目-选题报告
    [面试]快来测测你的C++水平
    [技术博客] 数据库1+N查询问题
    【Beta】Scrum meeting 10
    【Beta】Scrum meeting 9
    [技术博客] gitlab快速部署流程
  • 原文地址:https://www.cnblogs.com/bbbblog/p/5650691.html
Copyright © 2011-2022 走看看