文档章节

根据配置文件的值创建不同对象

IT-Mamba
 IT-Mamba
发布于 2018/07/21 10:35
字数 301
阅读 8
收藏 0

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;

    @Override
    public 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;

    @Override
    public 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代码

 

© 著作权归作者所有

上一篇: MyBatis缓存
IT-Mamba
粉丝 10
博文 132
码字总数 55322
作品 0
惠州
程序员
私信 提问
原创:实现ehcache动态创建cache,以及超期判断的具体逻辑

当前最常用的三个缓存组件:ehcache、redis、memcached 其中,ehcache与应用共同运行于JVM中,属于嵌入式组件,运行效率最高,因此常被用于实现一级缓存。 在更复杂的一些系统中,由于ehcac...

netwild
2018/03/03
0
0
Hibernate-ORM:02.Hibernate增删改入门案例

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本笔者使用的是Idea+mysql+maven做Hibernate的博客,本篇及其以后都是如此! 首先写好思路和流水,我说一下会讲什么: 1....

晨曦dawn
2018/05/25
0
0
终结篇:MyBatis原理深入解析(一)

1 引言# 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架。再而论述Mybatis作为一个数据持久层框架本身有待改进之处。 2 JDBC实现查...

猿码道
2016/08/04
0
0
【Ovirt 笔记】engine 用户扩展管理分析与整理

文前说明 作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。 本文仅供学习交流使用,侵权必删。 不用...

羽杰
2018/06/13
0
0
[IBM DW] 深入分析 iBATIS 框架之系统架构与映射原理

简介: iBATIS 通过 SQL Map 将 Java 对象映射成 SQL 语句和将结果集再转化成 Java 对象,与其他 ORM 框架相比,既解决了 Java 对象与输入参数和结果集的映射,又能够让用户方便的手写使用 ...

红薯
2010/11/13
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

规则引擎

解决问题 版本迭代速度更不上业务变化,但是若多个业务同时变化,除了为每个业务设计专属配置项也不利于操作。就想服务接口单纯化,将复杂多变的业务逻辑交给规则引擎,让用户在web端或cs端自...

无极之岚
23分钟前
4
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
今天
202
9
500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
10
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部