Java单一职责原则

单一职责原则(SRP:Single responsibility principle)又称单一功能原 则,面向对象五个基本原则(SOLID: SRP 单一责任原则、OCP 开放封闭原 则、LSP 里氏替换原则、DIP 依赖倒置原则、ISP 接口分离原则)之一。它规 定一个类应该只有一个发生变化的原因。该原则由罗伯特·C·马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中给出的。马丁表示此 原则是基于汤姆·狄马克(Tom DeMarco)和 Meilir Page-Jones 的著作中的内 聚性原则发展出的。

所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么 这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有 且只有一个改变的原因。

单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类 (大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一 个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化 时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责 封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总 是同时发生改变则可将它们封装在同一类中。

之所以会出现单一职责原则就是因为在软件设计时会出现以下类似场景:T 负责两个不同的职责:职责 P1,职责 P2。当由于职责 P1 需求发生改变而需要 修改类 T 时,有可能会导致原本运行正常的职责 P2 功能发生故障。也就是说 职责 P1 和 P2 被 在了一起。

耦合

解决办法:遵守单一职责原则,将不同的职责封装到不同的类或模块中。 分别建立两个类 T1、T2,使 T1 完成职责 P1 功能,T2 完成职责 P2 功能。这 样,当修改类 T1 时,不会使职责 P2 发生故障风险;同理,当修改 T2 时,也 不会使职责 P1 发生故障风险。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单一职责原则(Single Responsibility Principle,SRP)是面向对象设计中的一个重要原则。它要求一个类或模块应该只负责完成一个职责或功能。换句话说,一个类应该只有一个引起它变化的原因。 在Java中,我们可以通过以下几种方式来遵循单一职责原则: 1. 将不同的职责分离到不同的类中:将一个类中的多个职责拆分成多个类,每个类只负责一个职责。这样可以提高代码的可维护性和可扩展性。 2. 使用接口进行解耦:通过定义接口,将不同的职责分离开来,使得类之间的依赖关系更加松散。这样可以降低类之间的耦合度,提高代码的灵活性。 3. 使用设计模式:设计模式是一种经过验证的解决特定问题的方案。在遵循单一职责原则时,可以使用一些设计模式,如策略模式、观察者模式等,来将不同的职责分离开来,使得代码更加清晰和可维护。 下面是一个示例代码,演示了如何在Java中遵循单一职责原则: ```java // 负责处理用户信息的类 class UserInfoHandler { public void saveUserInfo(UserInfo userInfo) { // 保存用户信息的逻辑 } } // 负责发送邮件的类 class EmailSender { public void sendEmail(String email, String message) { // 发送邮件的逻辑 } } // 负责生成报表的类 class ReportGenerator { public void generateReport(List<Data> dataList) { // 生成报表的逻辑 } } ``` 在上面的示例中,我们将处理用户信息、发送邮件和生成报表这三个不同的职责分别放在了不同的类中,每个类只负责完成一个职责。这样可以使得代码更加清晰和易于维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值