1.有时候我们需要对一些bean原有的功能进行扩展,这个时候就需要写一些适配bean了。
适配类分为对象适配类和类适配类,但是类适配类破坏了里式替换原则,一般不建议使用
demo
/**
* @Description TODO
* @Author roy.ding
* @Date 2022/9/17 12:13:36
*/
public interface UserService {
public Map findById();
public List<Map> findUsers();
}
/**
* @Description TODO
* @Author roy.ding
* @Date 2022/9/17 12:14:51
*/
public class UserServiceImpl implements UserService{
@Override
public Map findById() {
LinkedHashMap map = new LinkedHashMap();
map.put("uaseId", 1234);
map.put("userName", "roy");
return map;
}
@Override
public List<Map> findUsers() {
List<Map> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
LinkedHashMap map = new LinkedHashMap();
map.put("userId", new Random().nextInt(100000));
map.put("userName", "roy" + i);
list.add(map);
}
return list;
}
}
/**
* @Description 对象适配器,项目中最常用的,类适配器破坏了里式替换原则,一般不建议使用
* @Author roy.ding
* @Date 2022/9/17 12:20:43
*/
public class SpecUserServiceAdaptor implements SpecUserService{
private UserService userService;
public SpecUserServiceAdaptor(UserService userService){
this.userService = userService;
}
@Override
public String findJsonById() {
Map byId = userService.findById();
String result = JSONObject.toJSONString(byId);
return result;
}
@Override
public String findJsonUsers() {
List<Map> users = userService.findUsers();
String result = JSON.toJSONString(users);
return result;
}
}
/**
* @Description 类适配器
* @Author roy.ding
* @Date 2022/9/17 12:27:45
*/
public class SpecUserServiceClassAdaptor extends UserServiceImpl implements SpecUserService{
@Override
public String findJsonById() {
Map byId = super.findById();
String result = JSONObject.toJSONString(byId);
return result;
}
@Override
public String findJsonUsers() {
List<Map> users = super.findUsers();
String result = JSON.toJSONString(users);
return result;
}
}
总结
1. 一定要注意我们的命名规则
2. 注意继承和实现的类和接口