设计模式七大原则

简介: 在日常的开发工作中,常常会被领导要求代码易维护,可扩展,成体系等等的一系列要求,我想设计模式就是应对这种情况而生的吧。最开始我也很反感,觉得为什么总是把简单的代码复杂化,设计模式又很难运用,生搬硬套。但是当我反复的推敲这种思想后,发现并不是很难用,而是我不够熟练;并不是生搬硬套,而是我没有理解它的思想;我想说的是那么多的设计模式在实际使用中并不会仅单单的使用某一种去解决问题,大部分都是相互的组合使用,并且没有固定的方式,在合适的场景中使用合适的设计模式才能使我们的代码更加合理。而个人认为设计原则的重要性远在设计模式之上。

image.png

单一职责原则

基本介绍

顾名思义就是想要一个类或者一个方法只做一件事,这 "一件事" 的范围自己定义,合理就好(能把别人说服就合理)。这个原则看起来很简单,其实我认为在所有的设计原则中它是最重要的,也是我们日常工作中使用最多的思想准则。

代码示例

假设我们有一个支付系统,接通了很多支付方式,如微信,支付宝,银联等等。下面是不考虑单一职责的写法:

@Component("SRP")
publicclassSRPPriciple {
publicvoidpay(StringpayType) {
switch (payType) {
case"wxpay"->System.out.println("这里使用微信支付");
case"alipay"->System.out.println("这里使用支付宝支付");
case"unionpay"->System.out.println("这里使用银联支付");
default->thrownewIllegalArgumentException("不支持该["+payType+"]支付方式");
        }
    }
}

这里使用了switch,如果是 if-else 也同理,如果业务上需要新增一种支付方式,那么就需要修改这段代码添加一个新的 case 语句。这样会有几个问题:

  • 我们每次新增一种支付方式时,其实与其他支付方式无关,但是现在代码又耦合在一起,很容易在多次迭代以后导致其他支付方式的代码被无疑间修改了
  • 如果写这段代码的人离职了,下一个接手的人来维护这段代码,随着业务逻辑又来越多,客户提出的支付形式越来越无理,这个类中的代码就会越来越复杂

综上所述,使用单一职责思想重构如下:

publicinterfacePayService {
voidpay();
}
@ComponentpublicclassWxpayServiceimplementsPayService {
@Overridepublicvoidpay() {
System.out.println("这里使用微信支付");
    }
}
@ComponentpublicclassAlipayServiceimplementsPayService {
@Overridepublicvoidpay() {
System.out.println("这里使用支付宝支付");
    }
}
@ComponentpublicclassUnionpayServiceimplementsPayService {
@Overridepublicvoidpay() {
System.out.println("这里使用银联支付");
    }
}

其实就是将每一种的支付逻辑隔离出来,互不影响,做到低耦合。


闲扯时间

说实话有时候使用单一职责思想去重构项目中既存的代码,很难达到所给示例的效果,因为一座 "屎山" 怎么可能就用几个设计原则及模式就能优化好呢,所以我认为我们需要有这种单一职责的思想就好,至于用不用,何使用,怎么用,这就得分场景,分项目,分目前的情况而定,切勿为了用而用。

相关文章
|
1天前
|
设计模式 前端开发 Java
设计模式之六大基本原则
设计模式之六大基本原则
20 0
|
6月前
|
设计模式 Java 程序员
|
7月前
|
设计模式 Java 测试技术
Java设计模式七大原则-接口隔离原则
Java设计模式七大原则-接口隔离原则
42 0
|
1天前
|
设计模式 算法 架构师
【搞懂设计模式】设计模式与面向对象原则
【搞懂设计模式】设计模式与面向对象原则
6 1
|
1天前
|
设计模式 前端开发 API
写出易维护的代码|React开发的设计模式及原则
本文对React社区里出现过的一些设计模式进行了介绍,并讲解了他们遵循的设计原则。
|
1天前
|
设计模式 数据可视化 关系型数据库
设计之美-揭秘设计模式、原则与UML的魔法
设计模式、设计原则和UML是软件工程设计中的核心要素。设计模式为常见问题提供经验证的解决方案,复用性高且提升开发效率。设计原则指导我们创建灵活、可维护和可扩展的系统,确保代码质量和长期可维护性。UML(统一建模语言)则是一种强大的可视化工具,用于描述、构建和文档化软件系统的结构和行为。它帮助开发者更清晰地理解系统架构和组件间关系。综合应用设计模式、设计原则和UML,能够显著提高软件开发的效率和质量,减少维护成本,为复杂系统的设计和实施提供有力支持。
37 0
设计之美-揭秘设计模式、原则与UML的魔法
|
1天前
|
设计模式 关系型数据库
设计模式的六大原则:理解设计模式的关键思想和应用
设计模式的六大原则:理解设计模式的关键思想和应用
18 2
|
1天前
|
设计模式
【设计模式】1、设计模式七大原则
【设计模式】1、设计模式七大原则
19 0
|
2天前
|
设计模式 存储 NoSQL
【设计模式】软件设计原则-单一职责原则
【1月更文挑战第12天】【设计模式】软件设计原则-单一职责原则
|
2天前
|
设计模式 关系型数据库
【设计模式】软件设置原则-开闭原则
【1月更文挑战第12天】【设计模式】软件设置原则-开闭原则