1 工厂模式的作用,为什么要用工厂模式?

工厂模式是为了解耦:把对象的创建和使用的过程分开。就是Class A 想调用Class B,那么只是调用B的方法,而至于B的实例化,就交给工厂类。

工厂模式可以降低代码重复。如果创建B过程都很复杂,需要一定的代码量,而且很多地方都要用到,那么就会有很多的重复代码。可以把这些创建对象B的代码放到工厂里统一管理。既减少了重复代码,也方便以后对B的维护。

工厂模式可以减少错误,因为工厂管理了对象的创建逻辑,使用者不需要知道具体的创建过程,只管使用即可,减少了使用者因为创建逻辑导致的错误。

2.工厂模式的一些适用场景:

对象的创建过程/实例化准备工作很复杂,需要很多初始化参数,查询数据库等

类本身有好多子类,这些类的创建过程在业务中容易发生改变,或者对类的调用容易发生改变

开始写一个实例

BeanFactory工厂

package org.factory;import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;/*** 一个创建bean对象的工厂* bean:一个可重复使用的组件** javabean不等于实体类* 他就是创建service和dao对象的* ①需要配置一个文件来配置service和dao对象* ②通过配置文件中的内容,放射创建对象 (配置内容:唯一标志等于权限制内容 key = value)** 配置文件可以是xml也可以是 properties*/
public class Beanfactory {//定义一个Properties对象private static Properties props;static {props = new Properties();//获取properties配置文件InputStream ip = Beanfactory.class.getClassLoader().getResourceAsStream("bean.properties");try {props.load(ip);} catch (IOException e) {throw new ExceptionInInitializerError("初始化失败");}}public static Object getBean(String beanName){Object bean = null;String beanPath = props.getProperty(beanName);try {bean=Class.forName(beanPath).newInstance();System.out.println(bean);} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return bean;}}

bean.properties 配置文件 (用来存放路径)

accountService=org.com.qst.service.impl.AccountServiceImpl
accoutDao=org.com.qst.service.impl.AcountDaoImpl

开始使用工厂模式  这里调用工厂模式中的方法从而代替了 new关键字来实例化对象

package org.ui;import org.com.qst.service.IAccountService;
import org.com.qst.service.impl.AccountServiceImpl;
import org.factory.Beanfactory;public class Client {public static void main(String[] args) {//  IAccountService as = new AccountServiceImpl();IAccountService as = (IAccountService)Beanfactory.getBean("accountService");as.saveAccount();}
}

调用工厂模式来实现对象实例化相关推荐

  1. JavaScript --- [学习笔记]观察者模式 理解对象 工厂模式 构造函数模式

    说明 本系列(JS基础梳理)为后面TCP的模拟实现做准备 本篇的主要内容: 观察者模式.工厂模式.构造函数模式 和 对对象的理解 1. 观察者模式 参考JavaScript设计模式 1.1 消息注册方 ...

  2. 二、工厂模式——在工厂里能找到你的对象

    文章目录 工厂模式 1. 简单工厂 2. 缓存方式 3. 工厂模式 4. 工厂的工厂 5. 抽象工厂 6. 工厂模式与IOC容器 总结 设计模式是面向问题.场景而总结产生的设计思路.是解决问题的套路. ...

  3. 工厂模式 android,当Android遇见工厂模式

    设计模式.png 我们先看一下一个Android系统应用中的工厂模式列子,再讲解工厂模式. package com.android.mms.ui; import android.content.Con ...

  4. 趣谈设计模式 | 工厂模式(Factory):利用工厂来创建对象

    文章目录 案例:外设店铺 简单工厂 工厂方法 抽象工厂 总结 要点 三类工厂模式的特点 三种工厂模式的适用场景 完整代码与文档 工厂模式模式是创建型模式中较为常用的一个,它并不是一个模式,而是三种功能 ...

  5. 一起学习设计模式--02.简单工厂模式

    工厂模式是最常用的一类创建型设计模式.我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式. 简单工厂模式是工厂方法模式的小弟,它不属于GoF 23种设计模式,但是在软件开发中应用也颇为频 ...

  6. 设计模式(一)---简单工厂模式

    1,简介:简单工厂模式,又称为静态工厂模式,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 2,简单工厂模式的结构 2.1:简单工厂的通用结构 2.2:示意性实现 2. ...

  7. Javascript设计模式(三)-- 抽象工厂模式

    抽象工厂模式:通过对类的工厂抽象使其业务用于对产品类簇的创建,而不负责创建某一类产品的实例. 抽象类 //测试抽象类,使用其实例方法时会抛出错误 var test = function(){}; te ...

  8. 百度apollo源码学习(二)apollo中的工厂模式

    文章目录 一.什么是工厂 二. 简单工厂模式 UML类图 简单工厂模式结构 代码 一.定义抽象产品类AbstractProduct 二.定义具体产品类 三.定义工厂类和工厂方法 应用 扩展 一.扩展具 ...

  9. C++设计模式 | Factory工厂模式(简单工厂、工厂方法、抽象工厂)

    目录 简单工厂 工厂方法 抽象工厂 学习工厂模式需要有C++虚函数 纯虚函数等相关继承与多态知识 简单工厂 在简单工厂模式中,可以根据参数的不同返回不同的实例..简单工厂模式专门定义一个类来负责创建其 ...

最新文章

  1. redis主备同步(使用)
  2. JZOJ 5405. 【NOIP2017提高A组模拟10.10】Permutation
  3. C语言检测大气成分,自动化结构健康监测
  4. Android动态赋权限,安卓6.0以上动态添加权限超简单模板
  5. adf开发_在EL表达式中引用ADF Faces组件
  6. 分页查询的实现(struts2+jsp+jstl+el)
  7. 报警服务器物理内存,从内存告警谈ESXi主机内存管理——内存构成
  8. Linux权限z代表什么,linux用户与权限使用方法
  9. 设置时区,时间,日期的脚本
  10. java基础知识整理(精简)
  11. SpringMVC控制器单例和多例
  12. erase() 返回的是删除此元素之后的下一个元素的迭代器 .xml
  13. php中vc14是什么意思,VC9、VC11、VC14、VC15是啥?
  14. web渗透测试入门01
  15. 深度学习是什么,深度学习概念的基本理解?
  16. Unity WebGL部署
  17. 微信开放平台应用申请流程优化公告
  18. Android 4.0以上设备虚拟按键中显示Menu键
  19. 微博上看到的,小白兔系列
  20. CAR-T研究最新进展(2022年10月第二期)

热门文章

  1. win7和linux下的文件共享
  2. 有苦有乐的算法 --- 图的深度优先遍历
  3. Android自学之路,DrawerLayout must be measured with MeasureSpec.EXACTLY.错误
  4. xv6操作系统源码阅读之init进程
  5. 基于FPGA的电子密码锁
  6. git学习之Linux安装Git
  7. RFI/RFP/RFQ的区别
  8. java黑皮书25.18-19----(压缩与解压),带界面,概念版
  9. 微信h5支付在iframe弹窗的坑
  10. Mac新手——如何在macOS中创建访客帐户