1. 软件架构设计都有哪些基本原则?
1、开闭原则(OCP Open Close Principle)
Software entities should be open for extension, but closed for modification.
定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是对于修改是封闭的。简单的说就是程序中类应该是易于扩展的,而不是一有什么新的需求或者变化就去修改原来的代码,这样很容易出现问题。
2、里氏替换原则(LSP Liskov Substitution Principle)
定义:在基类出现的地方,其子类也可以出现,并且不会出现错误。就是利用Java面向对象思想中的继承、多态的特性。简单来说凡是基类适用的地方,子类一定适用。
3、依赖倒转原则(DIP Dependence Inversion Principle)
定义:高层次的模块不依赖于低层次模块的实现细节。简单来说就是依赖抽象(高层次模块)而不依赖具体实现(低层次模块)。
4、迪米特原则(最少知识原则 LKP/LOD Least Knowledge Principle)
定义:一个类应该对自己需要耦合或者调用的类知道的最少,类的内部如何实现与调用者或者依赖者没关系,调用者或者依赖者只需要知道它需要的方法即可。
5、接口隔离原则(ISP InterfaceSegregation Principles)
定义:不依赖不需要的接口,从而容易重构、更改和重新部署。
6、单一职责原则(SRP Single Responsibility Principle)
定义:对一个类来说,应该仅有一个引起它变化的原因。简单来说就是模块的划分需要做到职责清晰,不要既能满足A需求,又能满足B需求,这样耦合太强,不利于后期的扩展和维护。
2. 什么是前后端分离架构?
前后端分离已成为互联网项目开发的业界标准使用方式,例如通过nginx与tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从“猿”进化成“人”的必经之路。
核心思想: 前端HTML页面通过AJAX调用后端的RESTFUL API接口并使用JSON数据进行交互。
Web服务器: 一般指像Nginx,Apache这类的服务器,他们一般只能解析静态资源;
应用服务器: 一般指像Tomcat,Jetty,Resin这类的服务器可以解析动态资源也可以解析静态资源,但解析静态资源的能力没有web服务器好;
一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。
以前的Java Web项目大多数都是Java程序员既搞前端,又搞后端。随着技术的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。大中型公司需要专业人才,小公司需要全才。
3. 什么是三层架构?
三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构&