java设计模式之设计原则③单一职责原则

定义:
不要存在多于一个导致类变更的原因
一个类/接口/方法只负责一项职责
优点:
降低类的复杂度,提高类的可读性,提高系统的可维护性、降低变更引起的风险

以下通过案例进行理解单一职责原则:
创建一个Brid(鸟)类
在这里插入图片描述
创建一个Test测试类
在这里插入图片描述
我们会发现大雁用翅膀非是正确的,但鸵鸟飞不起来,所以我们需要进行判断
在这里插入图片描述
如果现在再传来一些特色的鸟类,那我们这个方法还要继续扩展,风险率就变高了,不遵从单一原则。
所以我们现在就从类的层次上将这个Brid拆分开。
创建一个FlyBrid类 表示 会飞的鸟
在这里插入图片描述
再创建一个WalkBrid类 表示 走路的鸟
在这里插入图片描述
在Test类中就将飞的鸟和走路的鸟进行一个区分
在这里插入图片描述
这个就是一个类的单一原则的体现,我们把一个类进行拆分,这样就使得每个类里面的方法职责是单一的,比较简单,也不至于修改的时候引入新的问题。
类图如下:
在这里插入图片描述
这个类图还是比较简单的
现在呢我们就是用test类去创建FlyBrid和WalkBrid两个类,对于Brid类已经没用了
在这里插入图片描述
对于职责呢在类层次上还是比较清晰的,这是对于类的单一职责
那接下来就用接口举例
还是用ICourse进行举例,创建ICourse接口
getCourseName获取课程名称的方法
getCourseVideo获取视频的方法
studyCourse学习课程的方法
refundCourse退款方法
在这里插入图片描述
对于上面的ICourse接口可不是只有一个职责,首先它一个大职责是获得课程信息( 课程名称和视频信息),那另外一个职责呢就是管理课程,和课程内容无关,例如学习课程,那如果我们学习课程就要获取课程名称和视频,那如果退了这个课程呐可能就获取不了这个课程名称和视频,那就是说退这个课程会影响课程这个接口的获取课程内容相关的变化,这两个职责是互相影响的,那我们就可以把这个接口拆成两个接口,一个接口负责获取课程信息,另一个接口管理课程
创建一个接口ICourseManager
在这里插入图片描述
再创建一个接口ICourseContent
在这里插入图片描述
现在我们来创建一个ICourse的实现类实现ICourseManager 和ICourseContent接口
在这里插入图片描述
类图如下:
在这里插入图片描述
课程的实现类实现两个接口,职责呢也是单一的,一个接口的修只对响应的实现类有影响,与其他的接口无关,这个就是从接口级别上来展示单一职责
接下来就是方法级别来展示单一职责:
创建一个类Method
写一个方法updataUserInfo 参数 可以更新userName 姓名 address 地址
在这里插入图片描述
拆分如下
在这里插入图片描述
这样两个方法的职责就是单一切清晰的,这样关于方法的单一职责就展示出来了。
在我们实际的开发中如果类都遵循单一职责可能会导致类太多出现爆炸,
所以我们的接口和方法一定要展示单一职责,类的单一职责就看项目的情况而定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值