设计模式(六大原则)

                                     设计模式(分类)        设计模式(六大原则)   

    创建型(5种)        工厂方法         抽象工厂模式        单例模式        建造者模式        原型模式

    结构型(7种)        适配器模式        装饰器模式        代理模式        ​​​​​​外观模式      桥接模式        组合模式       享元模式

    行为型(11种)      策略模式        模板方法模式        观察者模式        迭代器模式     责任链模式     命令模式    备忘录模式          状态模式         访问者模式        中介者模式     


设计模式的六大原则是指导面向对象软件设计的基本准则,这些原则有助于设计出易于理解、灵活、可复用和可扩展的系统。

1. 单一职责原则 (Single Responsibility Principle, SRP)

原则表述: 一个类(或模块、函数)应有且仅有一个引起它变化的原因。换句话说,一个类应该只有一个职责,只有一个核心功能。

目的与效果

  • 提高内聚性:确保类的功能集中,易于理解和维护。
  • 减少耦合:单一职责的类不会因为其他无关的需求而被迫改变,降低了与其他类之间的依赖关系。

2. 开闭原则 (Open-Closed Principle, OCP)

原则表述: 软件实体(如类、模块、函数等)应当对扩展开放,对修改关闭。也就是说,允许在不修改现有代码的基础上扩展功能。

目的与效果

  • 保持稳定性:已有代码在需求变更时尽可能不受影响,减少了引入错误的风险。
  • 支持演化:通过增加新代码而非修改旧代码来适应新的需求,增强了系统的适应性和可扩展性。

3. 里氏替换原则 (Liskov Substitution Principle, LSP)

原则表述: 任何基类(父类)的实例应该能够在不改变程序正确性的情况下被其子类的实例替换。子类必须完全遵循基类的约定,不得破坏基类的封装性。

目的与效果

  • 维护继承体系的完整性:确保继承关系下的类型一致性,使得基类的使用者无需了解具体子类的实现细节。
  • 保障多态的正确性:确保在使用基类接口的地方,无论传递的是基类实例还是其子类实例,都能正确、一致地工作。

4. 依赖倒置原则 (Dependence Inversion Principle, DIP)

原则表述: 高层次模块不应该依赖于低层次模块,两者都应该依赖于抽象(接口或抽象类)。另外,抽象不应该依赖于细节,细节应该依赖于抽象。

目的与效果

  • 控制依赖方向:将高层模块与底层模块的耦合关系通过抽象进行解耦,使得系统更易于重构和测试。
  • 增强可扩展性:由于依赖于抽象,当需要替换具体实现时,只需提供符合同一抽象的新模块即可,无需修改高层模块。

5. 接口隔离原则 (Interface Segregation Principle, ISP)

原则表述: 客户端不应该被迫依赖它不需要的接口方法。一个类对另一个类的依赖应该建立在最小的接口之上。

目的与效果

  • 避免胖接口:通过将庞大的接口拆分成更小、更具体的接口,使得消费者仅需关注与自己相关的接口部分。
  • 提高接口的使用效率:减少不必要的实现负担,避免实现接口时为不使用的接口方法编写无意义的代码。

6. 迪米特法则 (Law of Demeter, LoD)

原则表述: 也称为最少知识原则,一个对象应尽可能少地了解其他对象的内部细节。对象之间应保持松散耦合,每个对象对其它对象的了解仅限于那些与本职工作密切相关的对象。

目的与效果

  • 降低耦合度:限制对象之间的交互范围,减少对象之间的直接依赖,使得系统更易于理解和维护。
  • 提高模块化程度:鼓励对象之间的协作通过中间对象或者消息传递机制来进行,避免“朋友”关系网过于庞大。
  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值