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

根据配置文件的值创建不同对象相关推荐

  1. OpenCV 笔记(06)— Mat 结构、像素值存储方法、创建 Mat 对象各种方法、Mat 对象的运算

    数字图像中的每个点都称为像素(对于图像元素),并且每个像素可以存储一个或多个值,这取决于它是否是仅存储一个值的黑白图像(也称为二进制图像,比如只存储0或1),还是存储两个值的灰度图像,或者是存储三个值 ...

  2. python pandas series想赋予新的值_pandas Series对象创建及常用操作

    pandas 的核心是 Series 和 DataFrame 两大数据结构,数据分析相关的所有事务都是围绕着这两种结构进行的.其中,Series 数据结构用于存储一个序列的一维数组,而 DataFra ...

  3. R语言survival包Surv函数创建生存对象、建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、drop1函数计算cox回归模型自变量似然比检验值、删除冗余变量重新构建cox模型

    R语言使用survival包的Surv函数创建生存对象.建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异.使用drop1函数计算cox回归模型自变量似然比检验结果.删除冗余变量重新构建 ...

  4. Mybatis 源码探究 (3)创建 SqlSessionFactory对象 执行sqlSession.getMapper()方法

    Mybatis 源码探究 (3)创建 SqlSessionFactory对象 时隔许久,终于又能接着来搞他啦.Mybatis 一起来探究吧. 先笑会再进入主题吧 开始啦 一.new SqlSessio ...

  5. MyBatis运行原理(三)接口式编程及创建代理对象原理分析

    一.面向接口开发步骤 定义代理接口,将操作数据库的方法定义在代理接口中. 在SQL 映射文件中编写SQL 语句. 将SQL 映射文件注册在MyBatis 的全局配置文件中. 编写测试代码. 二.环境准 ...

  6. spring中bean的细节之三种创建Bean对象的方式

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  7. 【Spring 工厂】反转控制与依赖注入、Spring工厂创建复杂对象3种方式

    反转控制与依赖注入 反转控制 与 依赖注入 反转控制(IOC Inverse of Control) 依赖注入 (Dependency Injection - DI) Spring工厂创建复杂对象(3 ...

  8. Spring AOP源码(2)—AspectJAwareAdvisorAutoProxyCreator创建代理对象【两万字】

      基于最新Spring 5.x,介绍了Spring AOP中的AspectJAwareAdvisorAutoProxyCreator自动代理创建者的工作流程,对于创建代理对象的源码进行了深度分析! ...

  9. IOC容器创建bean对象的4种方式

    前言: Spring容器创建bean对象,一般通过反射机制查找bean元素的class属性值来找到要实例化的类,从而实例化bean对象.这便是调用构造方法来实例化bean对象 在某些情况下,若采用简单 ...

  10. java string对象创建_String对象创建个数

    s = new String("xyz");创建了几个String Object?两个对象,一个是"xyx",一个是指向"xyx"的引用对象 ...

最新文章

  1. 46 万奖金等你拿 | 微众银行第二届金融科技高校技术大赛报名中
  2. scanf调试_STM32调试利器之ITM
  3. oracle日期格式更新_oracle 日期格式
  4. 寻宝机器人科技竞赛_永州:机器人设计竞赛展现中小学生对现代科技的热诚
  5. bzoj3252攻略(线段树+dfs序)或者(树链剖分+dfs)
  6. WIN10 下 PHP7 中文乱码的解决办法
  7. “Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“解决方法
  8. 工作111:对element-form的理解
  9. HAProxy.md
  10. ssis sql_如何在SSIS中使用SQL随机数
  11. 【安全风险通告】Spring Framework远程代码执行漏洞(CVE-2022-22965)安全风险通告第二次更新...
  12. 微信小程序template模板使用
  13. php网页错误404,php出现404错误页面的解决方法
  14. dorado7.x form提交数据报错
  15. 3dmax打开错误html,Windows安装3dmax软件失败提示错误三种解决办法
  16. 专有名词collect
  17. Node-RED使用指南:5:设置管理员的登录密码
  18. Android大厂面试真题解析大全,安卓未来路在何方
  19. 2834: 小凯的书架
  20. ZZULIOJ:1053: 正弦函数

热门文章

  1. mysql迁移到数据盘
  2. tomcat的url-pattern的源码分析
  3. CentOS项目实例之一--操作系统安装
  4. OpenCV教程(42) xml/yaml文件的读写
  5. 使用Camera的几个步骤
  6. oracle 偶尔登录超时,OracleClient,间歇性连接问题:应用程序挂起在OracleConnection.Open()上,没有超时,没有引发异常...
  7. slub分配流程-kmem_cache_alloc函数
  8. 内核调试神器SystemTap — 探测点与语法(二)
  9. 系统分析与设计课程总结
  10. python结构模式_Python程序中的观察者模式结构编写