适配器模式的应用

55 阅读1分钟

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. 注意继承和实现的类和接口