赞
踩
单一职责(Simple Responsibility Pinciple,SRP)又称单一功能原则,它规定一个类应该只有一个发生变化的原因。所谓职责是指类变化的原因,如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。假设我们有一个类负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能导致另一个职责的功能发生故障。这样一来,这个类就存在两个导致类变更的原因。
接下来,我们看一下代码示例,在开闭原则一节,我们创建接口WeChatMsgHandler以达到扩展而不修改已存在的代码,实现开闭原则。但是在处理msgType = event 时,我们查看微信公众号平台有多种event:subscribe,click等多种事件,如果将多种事件都放在一个类中处理,很明显违背了单一职责原则。可能我们一开始并不需要处理太多事件,一但再添加新的事件处理时就会更改原有的代码,我们需要一个类处理一种事件,与开闭原则一节类似,我们创建接口WeChatEventHandler,不同的事件选择不同的处理器进行处理,这种设计既符合开闭原则,又符合单一职责原则。
- public interface WeChatEventHandler {
- String getName();
- String eventHandler(WxMpXmlMessage weChatMsg);
- }
假如我们想要处理用户订阅时的事件,只需要创建一个订阅事件处理类,然后实现该接口即可,getName返回要处理的事件:
- public class SubscribeEventHandler implements WeChatEventHandler {
-
- @Override
- public String getName() {
- return "subscribe";
- }
- @Override
- public String eventHandler(WxMpXmlMessage weChatMsg) {
- return null;
- }
-
- }
我们在实际开发中会有项目依赖、组合、聚合这些关系,还有项目的规模、周期、技术人员的水平、对进度的把控,很多类都不符合单一职责。但是,我们在编写代码的过程,尽可能地让接口和方法保持单一职责,这样的设计,可以降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险。对项目后期的维护是有很大帮助的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。