设计模式-简单工厂设计模式

简介: 什么是工厂设计模式?工厂设计模式,顾名思义,就是用来生产对象的,在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则,如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的;所以说,工厂模式最大的优点就是:解耦。

什么是工厂设计模式?

工厂设计模式,顾名思义,就是用来生产对象的,在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则,如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的;所以说,工厂模式最大的优点就是:解耦。

本篇主要介绍简单工厂设计模式的使用:

我们先创建一个Shape接口类,和实现接口的实体类

public interface Shape {
    public void draw();
}
public class Rectangle implements Shape {
 
    public void draw(){
        System.out.println("初始化Rectangle方法");
    }
 
}
public class Square implements Shape {
 
    public void draw(){
        System.out.println("初始化Square方法");
    }
}
public class Circle implements Shape {
    public void draw(){
        System.out.println("初始化Circle");
    }
}

然后下一步定义一个工厂类ShapeFactory

public class ShapeFactory {
    public  Shape getShape(String shape){
        if (shape ==null){
            return null;
        }else if(shape.equalsIgnoreCase("Rectangle")){
            return new Rectangle();
        }else if(shape.equalsIgnoreCase("Square")){
            return new Square();
        }else if(shape.equalsIgnoreCase("Circle")){
            return new Circle();
        }
        return null;
    }
}

然后ShapeFactoryPattern用于演示,使用工厂类ShapeFactory获取Shap的对象。根据传递给工厂类方法里不同的入参,获取所需要的对象。

public class ShapeFactoryPattern {
    public static void main(String[] args){
        ShapeFactory shapeFactory = new ShapeFactory();
 
        Shape shape1=shapeFactory.getShape("Rectangle");
        shape1.draw();
        Shape shape2=shapeFactory.getShape("Square");
        shape2.draw();
        Shape shape3=shapeFactory.getShape("Circle");
        shape3.draw();
    }
}

输出结果

初始化Rectangle方法
初始化Square方法
初始化Circle
目录
相关文章
|
7月前
|
设计模式 Java 关系型数据库
解锁设计模式的神秘面纱:编写无懈可击的代码之抽象工厂设计模式
解锁设计模式的神秘面纱:编写无懈可击的代码之抽象工厂设计模式
25 0
|
7月前
|
设计模式 算法 Java
解锁设计模式的神秘面纱:编写无懈可击的代码之简单工厂设计模式
解锁设计模式的神秘面纱:编写无懈可击的代码之简单工厂设计模式
29 0
|
9月前
|
设计模式 算法 Java
从零玩转设计模式之简单工厂设计模式
从零玩转设计模式之简单工厂设计模式
48 0
|
9月前
|
设计模式 Java 关系型数据库
从零玩转设计模式之抽象工厂设计模式
从零玩转设计模式之抽象工厂设计模式
50 0
|
11月前
|
设计模式 Java
Java设计模式_工厂设计模式
Java设计模式_工厂设计模式
|
设计模式 JavaScript 前端开发
JavaScript设计模式-工厂设计模式(1)
JavaScript设计模式-工厂设计模式(1)
|
设计模式 Java
设计模式(10) -- 工厂设计模式(简单工厂,工厂方法,抽象工厂模式)(下)
设计模式(10) -- 工厂设计模式(简单工厂,工厂方法,抽象工厂模式)(下)
111 0
设计模式(10) -- 工厂设计模式(简单工厂,工厂方法,抽象工厂模式)(下)
|
设计模式
设计模式(10) -- 工厂设计模式(简单工厂,工厂方法,抽象工厂模式)(上)
设计模式(10) -- 工厂设计模式(简单工厂,工厂方法,抽象工厂模式)(上)
设计模式(10) -- 工厂设计模式(简单工厂,工厂方法,抽象工厂模式)(上)
|
设计模式 缓存 API
23种设计模式(一)---简单工厂设计模式
23种设计模式(一)---简单工厂设计模式
141 0
23种设计模式(一)---简单工厂设计模式
|
设计模式 缓存 API
设计模式第一篇 简单工厂设计模式
设计模式第一篇 简单工厂设计模式
133 0
设计模式第一篇 简单工厂设计模式