从左到右,依次调用
、
。
package com.controller;
import com.service.UserService;
import com.service.impl.UserServiceImpl;
import beans.User;
public class FactoryTest {
//抛出问题
//耦合问题
//含义:。。。
//方案
//
public static void main(String[] args) {
UserService userService = new UserServiceImpl();
int userId = 1;
User user = userService.findById(userId);
System.out.println(user);
}
}
、
package com.service;
import beans.User;
public interface UserService {
User findById(int userId);
}
。
package com.service.impl;
import com.dao.UserDao;
import com.service.UserService;
import beans.User;
import emm.BeanFactory;
public class UserServiceImpl implements UserService{
private UserDao userDao = (UserDao) BeanFactory.getBean("userDao");
public User findById(int userId) {
return userDao.findById(userId);
}
}
。
package com.dao;
import beans.User;
public interface UserDao {
User findById(int userId);
}
。
package com.dao.impl;
import com.dao.UserDao;
import beans.User;
//类的全限定名:包名+类的简单名称
public class UserDaoImpl implements UserDao {
@Override
public User findById(int userId) {
User user = new User();
user.setId(userId);
user.setName("张天师");
user.setLoginName("张天师");
user.setPassword("123456");
return user;
}
}
。
package emm;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;
public class BeanFactory {
// 容器,里面存放对象的
private static Map<String, Object> container = new HashMap<String, Object>();
//properties
//配置文件,用来存储配置信息的、用来解决硬编码
static {
InputStream inputStream = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
Properties properties = new Properties();
try {
properties.load(inputStream);
Set<Entry<Object,Object>> entries = properties.entrySet();
//增强for
//语法
//for(元素类型 名字 : 集合 )
for(Entry<Object,Object> entry : entries) {
//System.out.println(entry.getKey()+"==="+entry.getValue());
container.put(entry.getKey()+"", Class.forName(entry.getValue()+"").newInstance());
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(inputStream!=null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static Object getBean(String name) {
return container.get(name);
}
}
。
。