• Java中23种设计模式-单例模式--工厂模式


    加油,新时代打工人!

    23种设计模式定义介绍

    Java中23种设计模式-单例模式

    Java中23种设计模式-单例模式2–懒汉式线程不安全

    Java中23种设计模式-单例模式2–懒汉式2线程安全

    Java中23种设计模式-单例模式–饿汉式

    定义:
    工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

    工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。

    工厂模式属于创建型模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离。

    介绍
    意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

    主要解决:主要解决接口选择的问题。

    何时使用:我们明确地计划不同条件下创建不同实例时。

    如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。

    关键代码:创建过程在其子类执行。

    在这里插入图片描述

    创建一个接口:

    package factory;
    
    /**
     * @author wenhao
     * @date 2024/02/20 15:12
     * @description
     */
    public interface Shape {
    	void draw();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    创建实现接口的实体类。

    package factory;
    
    /**
     * @author wenhao
     * @date 2024/02/20 15:16
     * @description
     */
    public class Circle implements Shape {
    	@Override
    	public void draw() {
    		System.out.println("Circle的方法");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    package factory;
    
    /**
     * @author wenhao
     * @date 2024/02/20 15:12
     * @description
     */
    public class Rectangle implements Shape{
    	@Override
    	public void draw() {
    		System.out.println("Rectangle中的方法 ");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    package factory;
    
    /**
     * @author wenhao
     * @date 2024/02/20 15:16
     * @description
     */
    public class Square  implements Shape{
    
    	@Override
    	public void draw() {
    		System.out.println("Square的方法");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    创建一个工厂类,根据传入的类型,来创建对象的实例对象。

    package factory;
    
    /**
     * @author wenhao
     * @date 2024/02/20 15:18
     * @description 工厂类
     */
    public class ShapeFactory {
    	//使用getShape方法获取形状类型的对象
    	public  Shape getShape(String shapeType){
    		if(shapeType == null){
    			return null;
    		}
    		//equalsIgnoreCase 忽略大写字符
    		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;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    最后来验证这个工厂模式,将结果返回。

    package factory;
    
    /**
     * @author wenhao
     * @date 2024/02/20 16:28
     * @description
     */
    public class verify {
    	public static void main(String[] args) {
    		ShapeFactory shapefactory = new ShapeFactory();
    		//获取 Circle 的对象,并调用它的 draw 方法
    		Shape shape1 = shapefactory.getShape("circle");
    		//调用 Circle 的 draw 方法
    		shape1.draw();
    
    		Shape shape2 = shapefactory.getShape("RECTANGLE");
    		shape2.draw();
    
    		Shape shape3 = shapefactory.getShape("SQUARE");
    		shape3.draw();
    
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
  • 相关阅读:
    【C/C++】优雅而具体地向学生解释栈空间的分配与利用
    深入学习 Redis Sentinel - 基于 DockerCompose 编排哨兵分布式架构,理解工作原理
    自定义事件
    SVN安装教程
    融云AIGC专题:高知识密度与大数据处理双向奔赴的「金融大模型」
    最佳实践:Websocket 长连接状态如何保持
    top命令 – 实时显示系统运行状态
    【前端】Vue网络应用
    深入学习计算机组成原理文章体系
    火山引擎边缘云助力智能科技赋予生活更多新意
  • 原文地址:https://blog.csdn.net/weixin_45397785/article/details/136193783