架构模式>设计模式
三层架构分为Web层,Business层,Dao层,每一层都可以有自己的设计模式,Web层最常用的是MVC设计模式,Business层的Dao层则使用工厂模式,即通过工厂生产对应的对象从而进行解耦,还可以结合接口,继承等设计进一步解耦,当然工厂模式也是可以用在Web层,无论使用何种方式进行解耦,都是基于面向抽象编程的原则
实际开发中,原则都是面向抽象开发,即面向接口或者继承等方法进行解耦,即每一层都有自己的接口,实现类,父类等,通过实现接口,继承父类等把耦合度降低。大多数框架使用工厂模式的同时运用接口,继承等方法进行解耦
Web层:
Web层有多种框架,SpringMVC框架与Struts2框架都是基于MVC设计模式的框架。SpringMVC中的handler无论返回什么值,都会封装成ModelAndView对象,Model负责存储数据,View负责储存视图。即Controller负责与前端交互,需要传递给前端在页面中显示的数据存放在Model对象里(Model里的数据之所以能在页面中获取到,是因为Model里的全部数据会被默认放进request域中,当然自己也可以通过SessionAttribute注解手动指定特定数据放在Session域中),View对象则是存储需要前往的视图(视图解析器会解析,即返回的字符串类型的数据会被默认变成视图对象,由视图解析器进行解析)。
同样Struts2也是基于MVC设计模式的,Struts2通过Action负责与前端交互,值栈valueStack负责存储并携带数据到页面(容器ServletActionContext与ActionContext也可以携带数据到前端页面),视图则是通过配置result标签关联返回值与视图
Business层:
通过Web层传来的参数,处理实际业务需求。该层需要写实际的逻辑代码,即按照正确的业务逻辑进行处理(可以使用工厂模式,创建一个Service工厂,Web层就可以通过工厂创建对应的business对象,即根据业务需求可以通过同一个工厂创建不同的Service业务对象,从而调用对应的方法处理业务)
Dao层:
获取或存储数据到数据库(也可以通过创建一个工厂,Service通过Dao工厂创建对应的Dao对象,从而操作数据库(可以通过运行时多态,创建Dao接口确定类的规范,通过接口运行时才决定创建哪个Dao对象)),Dao层常用的框架有Mybatis,MybatisPlus以及Hibernate等框架
当然,设计模式不止只有MVC设计模式,工厂模式等,还有很多如单例模式,代理模式等,通过设计模式,可以很好地解决业务,代码或性能层面上的一些问题