博客
关于我
设计模式七大原则
阅读量:299 次
发布时间:2019-03-01

本文共 1174 字,大约阅读时间需要 3 分钟。

设计模式七大原则

1. 设计模式的目的

在编写代码时,我们常常会面临代码的耦合性、内聚性、可维护性、重用性、灵活性等多方面的挑战。设计模式的核心目标是让程序在以下方面表现更好:

  • 代码重用性:相同功能的代码无需多次编写。
  • 可读性:编程规范性,便于其他程序员阅读和理解。
  • 可扩展性:新增功能时十分方便。
  • 可靠性:新增功能后对原有功能不影响。
  • 高内聚,低耦合:各功能体现高内聚,但相互不影响。

2. 设计模式的分类

设计模式分为三大类型,共23种:

  • 创建型模式:如单例模式原型模式
  • 结构型模式:如工厂模式桥接模式
  • 行为型模式:如观察者模式中介者模式等。

3. 设计模式七大原则

3.1 单一职责原则
  • 基本介绍:一个类应专注于一个职责。例如,UserDAO类仅负责对User表进行增删改查。如果一个类同时操作User表和Order表,会违反单一职责原则。
  • 案例分析
    • 方案1:run方法中同时处理汽车、飞机、轮船的逻辑,违反单一职责原则。
    • 方案2:拆分为多个类,每个类专注一个职责。
    • 方案3:在方法级别遵守单一职责原则,适用于方法数量较少的情况。
  • 注意事项
    • 减少类的复杂性,一个类只负责一项职责。
    • 提高可读性和可维护性。
    • 避免变更代码引发的 Side Effect。
3.2 接口隔离原则
  • 基本介绍:客户端不应依赖不需要的接口。类之间的依赖应建立在最小接口上。
  • 案例分析
    • 方案1:直接实现同一接口,导致冗余方法。
    • 方案2:将接口拆分为多个接口,每个接口仅包含所需方法。
  • 优化方案:通过接口划分,减少不必要的依赖,提高代码可维护性。
3.3 依赖倒转原则
  • 基本介绍:高层模块不应直接依赖底层模块,而是通过抽象依赖。依赖倒转的中心思想是面向接口编程。
  • 案例分析
    • 方案1:直接依赖具体类,难以扩展。
    • 方案2:通过接口和依赖注入实现松耦合设计。
3.4 里氏替换原则
  • 基本介绍:继承的目的是设定规范,而不是强制子类遵循。子类应尽量不重写父类方法。
  • 案例分析
    • 方案1:子类直接继承父类,可能无意识重写方法。
    • 方案2:通过组合或聚合方式减少耦合性。
3.5 开闭原则
  • 基本介绍:软件实体应对扩展开放,对修改关闭。通过抽象构建框架,细节通过扩展实现。
  • 案例分析
    • 方案1:直接修改代码,难以扩展。
    • 方案2:通过接口和抽象类实现开闭原则。
3.6 迪米特法则
  • 基本介绍:一个对象应对其他对象保存最小的了解。通过封装让类之间的耦合度降低。
  • 案例分析
    • 方案1:直接访问内部对象,耦合度高。
    • 方案2:通过间接对象减少耦合。
3.7 合成复用原则
  • 基本介绍:尽量使用组合/聚合方式,而非继承。通过多个对象协作完成复杂逻辑。

总结

通过遵循上述七大原则,可以显著提升代码的可读性、可维护性和扩展性。合理应用设计模式和原则,能够让代码更加高效、稳定,降低维护成本。

转载地址:http://yyxo.baihongyu.com/

你可能感兴趣的文章
Objective-C实现罗马数字转十进制算法(附完整源码)
查看>>
Objective-C实现置换密码加解密算法(附完整源码)
查看>>
Objective-C实现置换密码加解密算法(附完整源码)
查看>>
Objective-C实现翻转图像augmentation算法(附完整源码)
查看>>
Objective-C实现老鼠迷宫算法(附完整源码)
查看>>
Objective-C实现聚类基本K均值算法(附完整源码)
查看>>
Objective-C实现自动查找和检索加密密钥算法(附完整源码)
查看>>
Objective-C实现自旋锁(附完整源码)
查看>>
Objective-C实现莫尔斯电码算法(附完整源码)
查看>>
Objective-C实现莱布尼兹级数求解π的近似值(附完整源码)
查看>>
Objective-C实现获取 Collatz 序列长度算法(附完整源码)
查看>>
Objective-C实现获取CPU温度(附完整源码)
查看>>
Objective-C实现获取daily horoscope每日星座运势算法(附完整源码)
查看>>
Objective-C实现获取GPU显卡信息(附完整源码)
查看>>
Objective-C实现获取HID设备列表 (附完整源码)
查看>>
Objective-C实现获取PE文件特征(附完整源码)
查看>>
Objective-C实现获取文件大小(字节数) (附完整源码)
查看>>
Objective-C实现获取文件头的50个字符(附完整源码)
查看>>
Objective-C实现获取文件最后修改时间(附完整源码)
查看>>
Objective-C实现获取文件末的50个字符(附完整源码)
查看>>