调用工厂模式来实现对象实例化
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();}
}
调用工厂模式来实现对象实例化相关推荐
- JavaScript --- [学习笔记]观察者模式 理解对象 工厂模式 构造函数模式
说明 本系列(JS基础梳理)为后面TCP的模拟实现做准备 本篇的主要内容: 观察者模式.工厂模式.构造函数模式 和 对对象的理解 1. 观察者模式 参考JavaScript设计模式 1.1 消息注册方 ...
- 二、工厂模式——在工厂里能找到你的对象
文章目录 工厂模式 1. 简单工厂 2. 缓存方式 3. 工厂模式 4. 工厂的工厂 5. 抽象工厂 6. 工厂模式与IOC容器 总结 设计模式是面向问题.场景而总结产生的设计思路.是解决问题的套路. ...
- 工厂模式 android,当Android遇见工厂模式
设计模式.png 我们先看一下一个Android系统应用中的工厂模式列子,再讲解工厂模式. package com.android.mms.ui; import android.content.Con ...
- 趣谈设计模式 | 工厂模式(Factory):利用工厂来创建对象
文章目录 案例:外设店铺 简单工厂 工厂方法 抽象工厂 总结 要点 三类工厂模式的特点 三种工厂模式的适用场景 完整代码与文档 工厂模式模式是创建型模式中较为常用的一个,它并不是一个模式,而是三种功能 ...
- 一起学习设计模式--02.简单工厂模式
工厂模式是最常用的一类创建型设计模式.我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式. 简单工厂模式是工厂方法模式的小弟,它不属于GoF 23种设计模式,但是在软件开发中应用也颇为频 ...
- 设计模式(一)---简单工厂模式
1,简介:简单工厂模式,又称为静态工厂模式,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 2,简单工厂模式的结构 2.1:简单工厂的通用结构 2.2:示意性实现 2. ...
- Javascript设计模式(三)-- 抽象工厂模式
抽象工厂模式:通过对类的工厂抽象使其业务用于对产品类簇的创建,而不负责创建某一类产品的实例. 抽象类 //测试抽象类,使用其实例方法时会抛出错误 var test = function(){}; te ...
- 百度apollo源码学习(二)apollo中的工厂模式
文章目录 一.什么是工厂 二. 简单工厂模式 UML类图 简单工厂模式结构 代码 一.定义抽象产品类AbstractProduct 二.定义具体产品类 三.定义工厂类和工厂方法 应用 扩展 一.扩展具 ...
- C++设计模式 | Factory工厂模式(简单工厂、工厂方法、抽象工厂)
目录 简单工厂 工厂方法 抽象工厂 学习工厂模式需要有C++虚函数 纯虚函数等相关继承与多态知识 简单工厂 在简单工厂模式中,可以根据参数的不同返回不同的实例..简单工厂模式专门定义一个类来负责创建其 ...
最新文章
- redis主备同步(使用)
- JZOJ 5405. 【NOIP2017提高A组模拟10.10】Permutation
- C语言检测大气成分,自动化结构健康监测
- Android动态赋权限,安卓6.0以上动态添加权限超简单模板
- adf开发_在EL表达式中引用ADF Faces组件
- 分页查询的实现(struts2+jsp+jstl+el)
- 报警服务器物理内存,从内存告警谈ESXi主机内存管理——内存构成
- Linux权限z代表什么,linux用户与权限使用方法
- 设置时区,时间,日期的脚本
- java基础知识整理(精简)
- SpringMVC控制器单例和多例
- erase() 返回的是删除此元素之后的下一个元素的迭代器 .xml
- php中vc14是什么意思,VC9、VC11、VC14、VC15是啥?
- web渗透测试入门01
- 深度学习是什么,深度学习概念的基本理解?
- Unity WebGL部署
- 微信开放平台应用申请流程优化公告
- Android 4.0以上设备虚拟按键中显示Menu键
- 微博上看到的,小白兔系列
- CAR-T研究最新进展(2022年10月第二期)