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

工厂模式是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. 屏蔽产品的具体实现,调用者只关心产品的接口。
缺点

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简单工厂模式是工厂模式中家族最简单实用的模式,可以理解为不同工厂模式的一个特殊的实现。 值得注意的是:简单工厂模式...
    Michaelhbjian阅读 1,449评论 0 1
  • 参考资料:菜鸟教程之设计模式 设计模式概述 设计模式(Design pattern)代表了最佳的实践,通常被有经验...
    Steven1997阅读 1,211评论 1 12
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 3,998评论 1 15
  • 杨颖小师妹的 125班组班完毕,应邀写诗祝贺 四天点齐本部兵 一二五班砥砺行 七年相伴赴南极 写作点评互赋能
    超级赋能王张胜萍阅读 226评论 0 4
  • 1.前一个月过完了十九岁生日,生日当天是星期五,差不多一整天都在上课,一大早起来揣着个手机跑步,因为已经习惯了手机...
    _handwriting阅读 544评论 2 0