Java反射结合属性文件实现工厂模式
2016-08-20 00:47
274 查看
通过属性文件的形式配置所需要的子类
首先创建一个fruit.properties的资源文件
内容为:
apple=Reflect.Apple
orange=Reflect.Orange
然后编写主类代码
【运行结果】:Apple
这里就可以解释以前看到.properties这种配置文件是干嘛的啦,
估计大概就是这么用的,读取文件配置,然后就可以修改配置文件的方式来简单轻松的完成一些任务,连接数据的配置也是这样的咯,大概有个印象,若要详细了解,还得查一番才行。
mongo.properties
memcached.properties
map.properties
default_setting.properties
quartz.properties
在我的这个项目里面就看到这么几个properties类型的文件,原来这些就是存了一些系统配置啊。
原来如此。
Apple apple = (Apple) f;
咳咳,这个是不行的,人能不强转成男人,至于为啥就自己猜吧。
编译时没错,运行时就炸了,这个也是多态的一个常问的问题。就不赘述啦
上面的代码里面有个问题。
虽然只是测试代码,但是里面的文件流并没有正确的关闭,
不知道观众的你是否发现啦,我也是回头再看这个的时候才发现的,或者说是我在知道
如何正确的关闭文件流之后,再看这个就看到了问题啦。
具体的就看下面这个文章
链接如下:
Java如何正确的使用try catch finally关闭文件流的总结
首先创建一个fruit.properties的资源文件
内容为:
apple=Reflect.Apple
orange=Reflect.Orange
然后编写主类代码
//细节:命名规则:类,接口名称都得大写; // 写完代码记得格式化,就算是测试代码,贴出来也是给人看的。不能太水。 interface Fruit { void eat(); } class Apple implements Fruit { public void eat() { System.out.println("Apple"); } } class Orange implements Fruit { public void eat() { System.out.println("Orange"); } } //操作属性文件类 class Init { public static Properties getPro() throws IOException { Properties pro = new Properties(); File f = new File("fruit.properties"); if (f.exists()) { pro.load(new FileInputStream(f)); } else { pro.setProperty("apple", "Reflect.Apple"); pro.setProperty("orange", "Reflect.Orange"); pro.store(new FileOutputStream(f), "FRUIT CLASS"); } return pro; } } class Factory { public static Fruit getInstance(String className) { Fruit f = null; try { f = (Fruit) Class.forName(className).newInstance(); } catch (Exception e) { e.printStackTrace(); } return f; } } class Hello { public static void main(String[] a) throws IOException { Properties pro = Init.getPro(); Fruit f = Factory.getInstance(pro.getProperty("apple")); if (f != null) { f.eat(); } } }
【运行结果】:Apple
这里就可以解释以前看到.properties这种配置文件是干嘛的啦,
估计大概就是这么用的,读取文件配置,然后就可以修改配置文件的方式来简单轻松的完成一些任务,连接数据的配置也是这样的咯,大概有个印象,若要详细了解,还得查一番才行。
mongo.properties
memcached.properties
map.properties
default_setting.properties
quartz.properties
在我的这个项目里面就看到这么几个properties类型的文件,原来这些就是存了一些系统配置啊。
原来如此。
Apple apple = (Apple) f;
咳咳,这个是不行的,人能不强转成男人,至于为啥就自己猜吧。
编译时没错,运行时就炸了,这个也是多态的一个常问的问题。就不赘述啦
上面的代码里面有个问题。
虽然只是测试代码,但是里面的文件流并没有正确的关闭,
不知道观众的你是否发现啦,我也是回头再看这个的时候才发现的,或者说是我在知道
如何正确的关闭文件流之后,再看这个就看到了问题啦。
具体的就看下面这个文章
链接如下:
Java如何正确的使用try catch finally关闭文件流的总结
相关文章推荐
- 【Java高级】反射+工厂模式+属性文件的实例应用
- 结合属性文件的工厂模式(java反射的应用)
- 几种读取属性文件的JAVA实现方式
- 编写一个文件,读取 src 下面day12包 下面的my.properties 文件,文件内容如下, className=day12.User 结合 IO、反射知识,完成 配置文件中对象的创建和方法调用。并编写方法,列举出 Student 类中所有的属性、
- 利用java反射实现两个具有相同属性bean赋值
- java结合WebSphere MQ实现接收队列文件功能
- Java利用反射实现对象之间相同属性复制
- java实现读取flash的swf文件属性 - zhangjianwxh的专栏 - CSDNBlog
- java工厂模式应用——多数据库分页实现(结合Spring)
- Java的泛型与反射结合实现去掉某字段的空格
- java使用dom4j解析xml配置文件实现抽象工厂反射示例
- Ueditor结合七牛云及百度云存储(JAVA版,ueditor-1.4.3)实现图片文件上传
- 几种读取属性文件的JAVA实现方式(2005年)
- 结合反射与 XML 实现 Java 编程的动态性
- java反射与注解方式实现通用类属性对比
- 利用文件属性结合Session实现在线人数统计
- 几种读取属性文件的JAVA实现方式
- 利用文件属性结合Session实现在线人数统计
- Java 结合DOS 实现文件剪切
- Ueditor结合七牛云及百度云存储(JAVA版,ueditor-1.4.3)实现图片文件上传