com.jsj.factory====新闻发布系统(3)
2020-05-12 天气:阴天
今天我将介绍包com.jsj.factory里面的类是做什么的:
DaoFactory.java
作用:dao对象创建调用这个类里面的方法,通过传递参数,会自动生成所需的对象
代码:
1 package com.jsj.factory; 2 3 import java.io.InputStream; 4 import java.util.Properties; 5 6 public class DaoFactory { 7 8 private DaoFactory() { 9 } 10 11 private static Properties properties; 12 13 static { 14 InputStream inputStream = DaoFactory.class.getClassLoader().getResourceAsStream("dao.properties"); 15 properties = new Properties(); 16 try { 17 properties.load(inputStream); 18 } catch (Exception e) { 19 throw new RuntimeException(); 20 } 21 } 22 //静态方法直接类调用,创建AdminDao类的对象 23 public static Object getDao(String daoName){ 24 try { 25 return Class.forName(properties.getProperty(daoName)).newInstance(); 26 } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { 27 return null; 28 } 29 } 30 31
ServiceFactory.java
作用:创建相关的Service
代码:
1 package com.jsj.factory; 2 3 import java.io.InputStream; 4 import java.util.Properties; 5 6 public class ServiceFactory { 7 //构造函数用来初始化的 8 private ServiceFactory(){ 9 } 10 11 private static Properties properties; 12 13 static { 14 InputStream inputStream = DaoFactory.class.getClassLoader().getResourceAsStream("service.properties"); 15 properties = new Properties(); 16 try { 17 properties.load(inputStream); 18 } catch (Exception e) { 19 throw new RuntimeException(); 20 } 21 } 22 23 //创建相关的Service的对象 24 /*A a = (A)Class.forName("pacage.A").newInstance(); 25 这和你 26 A a = new A(); 27 是一样的效果。 */ 28 public static Object getService(String serviceName){ 29 try { 30 /* 31 getProperty(String key) 在此属性列表中搜索具有指定键的属性。如果在此属性列表中找不到该键, 32 则会检查默认属性列表及其默认值(递归)。如果未找到该属性,则该方法返回默认值参数。 33 */ 34 return Class.forName(properties.getProperty(serviceName)).newInstance(); 35 } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { 36 return null; 37 } 38 } 39
会当凌绝顶,一览众山小