三层架构

f337ce8f6f78febda6adace777d1f354_MD5

由于单一职责原则,这里把三个职责集中在一起,是不合适的. 三层架构:

dbefec19c3b6aed29829147c1bc029c7_MD5

三层架构依次调用

5c34d5f4359c1b9783c657a27923c745_MD5

统一接口

DAO并不总是从文件访问数据,还可能从数据库 网络访问.因此,会有很多DAO层. 我们一般会给所有DAO层提供同一的访问接口.即面向接口编程. service层一般也同理. 我们的架构变成了这样

b14ea33f09be807c9c8317324892f583_MD5

其中,dao层提供统一的接口UserDao,而UserDaoImpl是一个实现类. tip:这里包名的命名impl 实现类的命名UserDaoImpl都是固定的规范. service同理

6af39f154a1ec9631a3c27f482b0694f_MD5

SpringbootDemo1

当中的代码抽取出来:

245fb5109933d219ad0bf81dfb99099a_MD5

634d92ab16840ece73791df82d71d57d_MD5

911fa1a0ddaf1649173b0d8c446d1ee9_MD5

48a88f6861072661215aa995e18d4afa_MD5

注意了,这里我们发现lines需要从dao中获取,因此我们需要有一个dao成员.这个成员类型应该是接口类型,这样可以利用多态. 最后:

a112e372993d9387870281b7ab175d06_MD5