美文网首页
工厂模式

工厂模式

作者: 863cda997e42 | 来源:发表于2018-03-06 09:44 被阅读6次

工厂模式

public interface Shape {
    void draw();
}

public class Rectangle implements Shape{
    
    public void draw() {
        // TODO Auto-generated method stub
        System.out.println("Inside Rectangle::draw() method.");
    }
}

public class Square implements Shape{

    public void draw(){
          System.out.println("Inside Square::draw() method.");
    }
}

public class Circle implements Shape {

    public void draw() {
        System.out.println("Inside Circle::draw() method.");
    }
}

public class ShapeFactory {
    
    @SuppressWarnings("unchecked")
    public static <T> T getClass(Class<? extends T> clazz) {
        T obj = null;

        try {
            obj = (T) Class.forName(clazz.getName()).newInstance();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        return obj;
    }
}

/*
public class ShapeFactory {
    
    public static Object getClass(Class<?extends Shape> clazz) {
        Object obj = null;

        try {
            obj = Class.forName(clazz.getName()).newInstance();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        return obj;
    }
}
*/


/*

public class ShapeFactory {

    // 使用 getShape 方法获取形状类型的对象
    public Shape getShape(String shapeType) {
        if (shapeType == null) {
            return null;
        }
        if (shapeType.equalsIgnoreCase("CIRCLE")) {
            return new Circle();
        } else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
            return new Rectangle();
        } else if (shapeType.equalsIgnoreCase("SQUARE")) {
            return new Square();
        }
        return null;
    }
}

*/

public class FactoryPatternDemo {

    public static void main(String[] args) {

        Rectangle rect = ShapeFactory.getClass(Rectangle.class);
        rect.draw();

        Shape square = ShapeFactory.getClass(Square.class);
        square.draw();

        Circle circle = ShapeFactory.getClass(Circle.class);
        circle.draw();

        /*
         * Rectangle rect = (Rectangle) ShapeFactory.getClass(Rectangle.class);
         * rect.draw(); Square square = (Square)
         * ShapeFactory.getClass(Square.class); square.draw(); Circle circle =
         * (Circle) ShapeFactory.getClass(Circle.class); circle.draw();
         */

        /*
         * ShapeFactory shapeFactory = new ShapeFactory();
         * 
         * //获取 Circle 的对象,并调用它的 draw 方法 Shape shape1 =
         * shapeFactory.getShape("CIRCLE");
         * 
         * //调用 Circle 的 draw 方法 shape1.draw();
         * 
         * //获取 Rectangle 的对象,并调用它的 draw 方法 Shape shape2 =
         * shapeFactory.getShape("RECTANGLE");
         * 
         * //调用 Rectangle 的 draw 方法 shape2.draw();
         * 
         * //获取 Square 的对象,并调用它的 draw 方法 Shape shape3 =
         * shapeFactory.getShape("SQUARE");
         * 
         * //调用 Square 的 draw 方法 shape3.draw();
         */
    }
}

相关文章

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

  • 工厂模式

    工厂模式细分三种:简单工厂模式、工厂模式、抽象工厂模式。 工厂模式相当于抽象了简单工厂模式的工厂类,而抽象工厂模式...

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

    找女朋友之简单工厂模式,工厂模式,抽象工厂模式 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

  • 【设计模式】- 工厂模式

    工厂模式分为三种:简单工厂模式、工厂方法模式和抽象工厂模式。 工厂模式:靠工厂生产对象 简单工厂模式中只有一个工厂...

  • 工厂模式

    工厂模式包含三种模式:简单工厂模式、工厂方法模式和抽象工厂模式。 简单工厂模式 定义简单工厂模式:由一个工厂类根据...

  • Java设计模式——工厂模式

    工厂模式简单工厂模式工厂方法模式抽象工厂模式 1.简单工厂模式 1.基本介绍1)简单工厂模式也叫静态工厂模式,是属...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

网友评论

      本文标题:工厂模式

      本文链接:https://www.haomeiwen.com/subject/gkllfftx.html