美文网首页
Java设计模式之简单工厂模式

Java设计模式之简单工厂模式

作者: BestbpF | 来源:发表于2018-07-25 09:58 被阅读14次

    工厂模式是Java中很常用的设计模式之一,主要用来提供一种创建对象的方式,在该设计模式中,创建对象的逻辑不会暴露给用户,提供给用户的是指向所创建对象的一个共同的接口。工厂模式大致可以分为三种,简单工厂模式、工厂方法模式以及抽象工厂模式,这里我们先介绍简单工厂模式。

    介绍

    目的

    定义一个创建对象的接口,具体创建哪个对象由用户决定后其实现类执行,将创建对象延迟到子类去执行。主要解决了接口的选择问题。

    场景

    当我们需要在不同条件下创建不同对象时,只需要向工厂类指定想要生成的对象,工厂类便会直接生成对应的对象。

    应用实例

    当你需要一辆汽车时,向工厂说出你想要车的名字就可以直接提货,不需要管该汽车是如何创建的。当你使用JDBC或者一些ORM框架去连接不同数据库时,也可以使用工厂模式去设计。

    代码展示
    public interface Shape {
        void draw();
    }
    
    public class Circle implements Shape {
        @Override
        public void draw() {
            System.out.println("I draw a Circle!!!");
        }
    }
    
    public class Rectangle implements Shape {
        @Override
        public void draw() {
            System.out.println("I draw a Rectangle!!!");
        }
    }
    
    public class Square implements Shape {
        @Override
        public void draw() {
            System.out.println("I draw a Square!!!");
        }
    }
    
    public class ShapeFactory {
        public static final String CIRCLE = "CIRCLE";
        public static final String SQUARE = "SQUARE";
        public static final String RECTANGLE = "RECTANGLE";
    
        public static Shape getShape(String type){
            Shape shape = null;
    
            switch (type){
                case CIRCLE :
                    shape = new Circle();break;
                case SQUARE :
                    shape = new Square();break;
                case RECTANGLE :
                    shape = new Rectangle();break;
                default: break;
            }
    
            return shape;
        }
    }
    
    测试
    public class Test {
        public static void main(String[] args) {
    
            Shape rectangle = ShapeFactory.getShape(ShapeFactory.RECTANGLE);
            rectangle.draw();
    
            Shape circle = ShapeFactory.getShape(ShapeFactory.CIRCLE);
            circle.draw();
    
            Shape square = ShapeFactory.getShape(ShapeFactory.SQUARE);
            square.draw();
        }
    }
    //结果
    //I draw a Rectangle!!!
    //I draw a Circle!!!
    //I draw a Square!!!
    
    优点
    1. 一个调用者想创建一个对象,只要知道其名称就可以了。
    2. 屏蔽产品的具体实现,调用者只关心产品的接口。
    缺点

    每次增加一个产品时,都需要增加一个具体类和修改工厂类,耦合度高,可扩展性差,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。

    相关文章

      网友评论

          本文标题:Java设计模式之简单工厂模式

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