设计模式实际是一代代代码人的经验总结。它会教你怎样让最初写好的代码更好维护,更少因为后期需求而改变。
There should never be more than one reason for a class to change.
这是单一职责原则(SRP)的定义。即,有且仅有一个原因会引起类的变更。SRP适用于类,接口,函数,甚至是服务。近来比较火的微服务架构就奉行单一职责原则,每个微服务只有一个职责。这样整个系统架构会非常清晰,排查问题也会比较方便。
职责单一的后果之一就是职责单位(微服务,类,接口,函数)的数量剧增。据说Amazon,Netflix这些采用微服务架构的网站一个小功能就会调用几十上百个微服务。但是相较于每个函数都是多个业务逻辑或职责功能的混合体的情况,维护成本还是低很多的。
Laravel框架的分层原理中实际上也有对SRP的体现。每个Model对应一张表,每个Repository的类只操作一个model,其中的每个函数只实现单一功能,而业务逻辑则放在Controller层,这一层可以操作多个Repository从而操作多张表。
从上边可以看出,SRP中的“单一职责”是个比较模糊的概念。对于函数,它可能指单一的功能,不涉及复杂逻辑;但对于类或者接口,它可能是指对单一对象的操作,也可能是指对该对象单一属性的操作。总而言之,单一职责原则就是为了让代码逻辑更加清晰,可维护性更好,定位问题更快的一种设计原则。
刚开始学习设计模式,如有理解偏颇,还请各位大牛指正!多谢多谢!
----------------------------------------------------------------------------------------------------------can not see me----------------------------------------------------------------
给大家推荐秦小波老师的《设计模式之禅》这本书,对理解设计模式很有帮助。