设计模式和设计原则

本文深入解析设计模式,包括创建型、结构型和行为型模式,探讨它们如何促进代码重用,增强代码理解和确保可靠性。同时,文章阐述了设计原则如开闭原则、里氏代换原则等,帮助开发者构建灵活、可扩展的软件系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计模式

是高度抽象化的,在编程中可以被反复使用的代码设计经验的总结。

是人们长期编程经验总结出的编程思想。

使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

设计模式按照使用场景可以分为三大类:

创建型模式(Creational Patterns)

创建对象的方法,对对象的实例化过程进行抽象,对于类创建模式来说通过使用继承改变实例化的类,对于对象创建模式来说通过使用代理来实例化所需要的对象。

对象实例化的模式,创建型模式用于解耦对象的实例化过程。

  • 工厂模式 Factory Pattern
  • 抽象工厂模式 Abstract Factory Pattern
  • 原型模式 Prototype Pattern
  • 构建者模式 Builder Pattern
  • 单例模式 Singleton Pattern

结构型模式(Structural Patterns)

通过对多个类和对象进行组合得到复杂结构的类,一般使用继承或者成员变量引用形式来实现。

把类或对象结合在一起形成一个更大的结构。

  • 适配器模式Adapter Pattern
  • 桥接模式 Bridge Pattern
  • 过滤器模式Filter Criteria Pattern
  • 组合模式Composite Pattern
  • 装饰者模式 Decorator Pattern
  • 门面模式 外观模式 Facade Pattern
  • 享元模式 Flyweight Pattern
  • 代理模式 Proxy Pattern

行为型模式(Behavioral Patterns)

行为模式不仅表达了对象和类,还表达了他们之间的交互,涉及到了对象和算法的分配。

类和对象如何交互,及划分责任和算法

通过类之间不同的通信方式实现不同的行为方式

  • 责任链模式 chain of responsibility pattern

  • 命令模式 command pattern

  • 解释器模式interpreter pattern

  • 迭代器模式iterator pattern

  • 中介者模式 mediator pattern

  • 备忘录模式 memento(纪念品) pattern

  • 观察者模式observer pattern

  • 状态模式state pattern

  • 策略模式strategy pattern

  • 模板方法模式template pattern

  • 访问者模式visitor pattern

设计原则

设计模式的7个原则。

为了便于记忆,我们可以使用一个口诀来记忆面向对象设计原则:开口合里最单依

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

对象(类、模块、函数)对扩展开放,对修改关闭,实体应该在不改变其源代码的基础上改变其行为。这是面向对象设计(OOD)的基石。

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

通过将不同的功能定义在不同的接口中来实现接口隔离。避免了其他类在依赖该接口时依赖其他不需要的接口(功能),减少客户程序之间的耦合性,以及接口之间依赖的冗余性和复杂性。

组合/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)

在一个新的对象中引入已有对象,达到类的功能扩展和复用。要尽量使用聚合or组合,而不是集成去扩展类功能。

里氏代换原则(Liskov Substitution Principle,LSP)

在任意父类出现的地方,子类都一定可以出现。
实现开闭原则的关键就是抽象化,子父类的继承关系是抽象化的具体实现, 里氏替换是实现抽象化的规范。
由 Barbar Liskov (芭芭拉.里氏) 提出,是继承复用的基石。

最少知识原则(Least Knowledge Principle,LKP)(迪米特法则)

一个对象应该对其他对象,尽可能的少的了解和依赖(相互作用),降低模块的耦合性,提高内聚性。模块之间功能独立,可以独立运行,也使组合变得更容易。

单一职责原则(Simple responsibility pinciple,SRP)

一个类只有一个职责,(仅有一个引起它变化的原因)、

依赖倒置原则(Dependence Inversion Principle)、

依赖于抽象(抽象类and接口),不依赖于具体的实现类。降低了用户和实现模块之间的耦合度。
(减少类间的耦合性,提高系统的稳定,降低并行开发引起的风险,提高代码的可读性和可维护性)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值