设计模式-单一职责原则
单一职责原则使用的是创建型模式
创建型模式
创建型模式对类进行抽象
重点,创建型模式能够将对象的创建和和对象的使用分离。即使用创建型模式能够使得对象的创建,对象的使用分离。重点在于分离。
什么是单一的职责原则
设计模式有六大基本原则,单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则,开闭原则。
其中创建型模式符合单一职责原则。
单一职责原则
即SRP 用户角色管理等模块,使用的是RBAC模型
RBAC 一种以角色为储存的控制,使用RBAC 不赋予权限,赋予角色,例如windows的用户管理,使用的是赋予角色,对用户进行管理,这种方式为RBAC,目的在于使得用户和权限分离。
设计一个用户管理,依据单一职责模型,设计以下的结构。
该结构定义一些管理用户的,增加用户的一些内容,写入一个接口中,然后进行实现。
该接口具有以上的问题。
用户的属性(是否为注册用户,vip用户等等),用户的行为(增加用户,删除用户)没有分开。
该接口一团糟!
应该用户的信息,用户的行为抽取为一个接口,然后一个接口继承这两个接口
更改的如下所示
why? 为什么要分离,因为单一职责原则,当使用单一职责原则的时候,每个接口,每个类需要承担单一的职责,不应该承担过多的原则,易于维护
核心 ,一个接口只有一个原则!一个接口只能负责一件事情,只有一个原因能引起其变化
实现一个电话的接口
这个接口包含两个职责,协议管理和数据传送。
dial和chat为通话,该通话和拨打电话,使用了同时都和协议有关系,如果要更改协议,那么这两个接口的内容都需要进行更改。由于一个接口存在两个职责,所以该接口需要划分为两个接口
此时存在一个关联关系,拨打电话和协议的实现,两者之间存在关联关系,此关联关系为静态关联
这个类图完全符合单一职责的原则。每个状态只决定一件事情。每个状态的更改只改变一件事情。
好处 复杂度降低 可读性提高 可维护性增强 变更引起的风险降低(因为变更的时候如果每个接口只负责一个单一的原则,那么一个接口的修改对其他没有影响,这样降低了整体的复杂度)
单一原则适用于方法
刀就是刀,叉就是叉,1就是1,0就是0.没有中间态,每个方法也同样的适用于单一原则,每个方法也同样的只承担一个内容。一个作用。
总结
This is sometimes hard to see
这个有时候很难说!
对接口尽量做到单一原则,类的做到引起一个原因引起的变化。