三层架构
习惯看视频学习的小伙伴们一定总是在视频中看到老师的包命名方式,常见的有Dao、Service、Servlet、Controller。这些其实就是表示架构的文件夹
架构存在的意义
高耦合的设计在日益复杂的程序中早就是被诟病的食物了,现在的程序走的设计应该为“高内聚低耦合”的方式,如果你不懂“高内聚低耦合”建议先补前面的知识。架构的出现就是增加代码的可扩展性,以此达到各层更低的耦合度。
什么是三层架构
三层架构是由业务层、数据访问层(更多的人叫它持久层)、表现层组成。
举个例子来说,你每天打开b站,在url上输入网址,跳转到b站的界面,这一个很常见的步骤就已经设计到了这三层架构。在你输入网址并按确定的时候,浏览器会将请求参数发给表现层,表现层调用后台的业务层,业务层向数据访问层(持久层)拿数据。持久层拿到数据后返回给业务层,业务层再响应给表现层,至此一个三层架构就交互完成了。
表现层(User Interface, ui)就知道是用户首先接触到层。主要负责与用户交互,整张页面的外观都算是表现层。
业务层(Business Logic Layer,bll)后台的业务逻辑方法,比如你在表现层按下一个Button,这个Button有什么功能,基本属于业务逻辑层。
数据访问层(Data Acess Layer,dal)数据库的层,就比如刚刚你按的那个Button如果是输入完密码的登入的话,业务层就会调持久层去对比密码是否和数据库中的相同。(当然这里指的漏洞百出的登录,不涉及到安全框架,请大家别杠)
public JSONArray getChartData(String ids) {
JSONArray arrayResult = new JSONArray();
List<String> idList = JSONArray.parseArray(ids, String.class);
List<Map<String, String>> lopList = csvDao.getChartData(idList, "L");
List<Map<String, String>> vList = csvDao.getChartData(idList, "V");
Map<String, List<Map<String, String>>> newLop = lopList.stream().collect(Collectors.groupingBy(m -> m.get("chart_title")));
Map<String, List<Map<String, String>>> newV = vList.stream().collect(Collectors.groupingBy(m -> m.get("chart_title")));
newLop.putAll(newV);
newLop.forEach((key, value) -> {
JSONObject result = new JSONObject();
JSONArray array = new JSONArray();
value.forEach(m -> {
JSONArray objects = new JSONArray();
objects.add(new BigDecimal(m.get("volts")));
objects.add(new BigDecimal(m.get("i")));
array.add(objects);
});
result.put("legend", key);
result.put("chart", array);
arrayResult.add(result);
});
return arrayResult;
}