根据配置文件的值创建不同对象
2019独角兽企业重金招聘Python工程师标准>>>
1、新建抽象类AbstractUser
package com.kobe.model;public abstract class AbstractUser {public abstract void work();}
2、新建继承AbstractUser 的 AbstractStudent 、 AbstractTeacher
package com.kobe.model;public class AbstractTeacher extends AbstractUser{private int id;private String name;@Overridepublic void work(){System.out.println("teach");}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
package com.kobe.model;public class AbstractStudent extends AbstractUser {private int id;private String name;@Overridepublic void work(){System.out.println("study");}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
3、在resources目录下新建配置文件 obj.properties
AbstractModel = com.kobe.model.AbstractStudent
4、新建工厂类 getUser方法 从配置文件中读取配置信息
package com.kobe.test;import com.kobe.model.AbstractUser;import java.util.Properties;public class AbstractFactory {public static AbstractUser getUser(){try {Properties prop = new Properties();prop.load(simpleFactory.class.getClassLoader().getResourceAsStream("obj.properties"));String model = (String) prop.get("AbstractModel");AbstractUser u = (AbstractUser) Class.forName(model).newInstance();return u;} catch (Exception e) {e.printStackTrace();}return null;}}
5、新建测试类
package com.kobe.test;import com.kobe.model.AbstractUser;public class testAbstract {public static void main(String[] args) {AbstractUser u1 = AbstractFactory.getUser();u1.work();}
}
输出结果是 study
如果把配置文件中的 AbstractModel的值换成 com.kobe.model.AbstractTeacher
输出就变成 teach
根据配置文件创建不同的实体类,不需修改java代码
转载于:https://my.oschina.net/xiaozhiwen/blog/1860465
根据配置文件的值创建不同对象相关推荐
- OpenCV 笔记(06)— Mat 结构、像素值存储方法、创建 Mat 对象各种方法、Mat 对象的运算
数字图像中的每个点都称为像素(对于图像元素),并且每个像素可以存储一个或多个值,这取决于它是否是仅存储一个值的黑白图像(也称为二进制图像,比如只存储0或1),还是存储两个值的灰度图像,或者是存储三个值 ...
- python pandas series想赋予新的值_pandas Series对象创建及常用操作
pandas 的核心是 Series 和 DataFrame 两大数据结构,数据分析相关的所有事务都是围绕着这两种结构进行的.其中,Series 数据结构用于存储一个序列的一维数组,而 DataFra ...
- R语言survival包Surv函数创建生存对象、建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、drop1函数计算cox回归模型自变量似然比检验值、删除冗余变量重新构建cox模型
R语言使用survival包的Surv函数创建生存对象.建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异.使用drop1函数计算cox回归模型自变量似然比检验结果.删除冗余变量重新构建 ...
- Mybatis 源码探究 (3)创建 SqlSessionFactory对象 执行sqlSession.getMapper()方法
Mybatis 源码探究 (3)创建 SqlSessionFactory对象 时隔许久,终于又能接着来搞他啦.Mybatis 一起来探究吧. 先笑会再进入主题吧 开始啦 一.new SqlSessio ...
- MyBatis运行原理(三)接口式编程及创建代理对象原理分析
一.面向接口开发步骤 定义代理接口,将操作数据库的方法定义在代理接口中. 在SQL 映射文件中编写SQL 语句. 将SQL 映射文件注册在MyBatis 的全局配置文件中. 编写测试代码. 二.环境准 ...
- spring中bean的细节之三种创建Bean对象的方式
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- 【Spring 工厂】反转控制与依赖注入、Spring工厂创建复杂对象3种方式
反转控制与依赖注入 反转控制 与 依赖注入 反转控制(IOC Inverse of Control) 依赖注入 (Dependency Injection - DI) Spring工厂创建复杂对象(3 ...
- Spring AOP源码(2)—AspectJAwareAdvisorAutoProxyCreator创建代理对象【两万字】
基于最新Spring 5.x,介绍了Spring AOP中的AspectJAwareAdvisorAutoProxyCreator自动代理创建者的工作流程,对于创建代理对象的源码进行了深度分析! ...
- IOC容器创建bean对象的4种方式
前言: Spring容器创建bean对象,一般通过反射机制查找bean元素的class属性值来找到要实例化的类,从而实例化bean对象.这便是调用构造方法来实例化bean对象 在某些情况下,若采用简单 ...
- java string对象创建_String对象创建个数
s = new String("xyz");创建了几个String Object?两个对象,一个是"xyx",一个是指向"xyx"的引用对象 ...
最新文章
- 46 万奖金等你拿 | 微众银行第二届金融科技高校技术大赛报名中
- scanf调试_STM32调试利器之ITM
- oracle日期格式更新_oracle 日期格式
- 寻宝机器人科技竞赛_永州:机器人设计竞赛展现中小学生对现代科技的热诚
- bzoj3252攻略(线段树+dfs序)或者(树链剖分+dfs)
- WIN10 下 PHP7 中文乱码的解决办法
- “Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“解决方法
- 工作111:对element-form的理解
- HAProxy.md
- ssis sql_如何在SSIS中使用SQL随机数
- 【安全风险通告】Spring Framework远程代码执行漏洞(CVE-2022-22965)安全风险通告第二次更新...
- 微信小程序template模板使用
- php网页错误404,php出现404错误页面的解决方法
- dorado7.x form提交数据报错
- 3dmax打开错误html,Windows安装3dmax软件失败提示错误三种解决办法
- 专有名词collect
- Node-RED使用指南:5:设置管理员的登录密码
- Android大厂面试真题解析大全,安卓未来路在何方
- 2834: 小凯的书架
- ZZULIOJ:1053: 正弦函数
热门文章
- mysql迁移到数据盘
- tomcat的url-pattern的源码分析
- CentOS项目实例之一--操作系统安装
- OpenCV教程(42) xml/yaml文件的读写
- 使用Camera的几个步骤
- oracle 偶尔登录超时,OracleClient,间歇性连接问题:应用程序挂起在OracleConnection.Open()上,没有超时,没有引发异常...
- slub分配流程-kmem_cache_alloc函数
- 内核调试神器SystemTap — 探测点与语法(二)
- 系统分析与设计课程总结
- python结构模式_Python程序中的观察者模式结构编写