设计模式概述

设计模式:解决不断重复发生的问题的解决方案。

分类

创建模式:用于描述"怎样创建对象",提供了创建对象的机制,能够提升已有代码的灵活性和可复用性。

主要特点:将对象的创建与使用分离,

分为单例、原型、工厂、抽象工厂、建造者五种。

结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,保持结构的灵活性和高效性;

分为代理、适配器、桥接、装饰、外观、享元、组合七种。

行为型模式:用于描述类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务,以及怎样分配职责。(负责对象间的高效沟通和职责委派)

分为模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器十一种。

设计原则

单一职责原则

单一职责原则(Single Responsibility Principle):应该有且仅有一个原因引起类的变更。(一个类,最好只负责一件事)

开放封闭原则

开闭原则(Open Close Principle):对扩展开发,对于修改关闭。程序进行扩展的时候,不能去修改原有的代码。

可以使用接口或者抽象类

里氏替换原则

里氏替换原则(Liskov Substitution Principle):任何基类可以出现的地方,子类一定可以出现,即子类继承父类时,除添加新增方法完成新增功能,尽量不去重写父类方法。(让子类可以替换父类向上转型

依赖倒置原则

依赖倒置原则(Dependency Inversion Principle):

高层模块不可以依赖底层模块,均依赖其抽象;

抽象不应该依赖细节,

细节应该依赖抽象。

即要针对接口编程,而不是针对实现编程。

接口隔离原则

接口隔离原则(Interface Segregation Principle):

客户端不应该依赖它不需要的方法;(使用多个专门的接口,而不使用单一接口)

一个类对另一个类的依赖应该建立于最小的接口上

比如:类A需要用到fun1, 类B需要用到fun2;我们应该创建一个实现fun1的接口interface1,和一个实现fun2的接口interface2,然后在A中实现interface1, B中实现interface2

迪米特原则

迪米特原则(Least Knowledge Principle):又称为最少知识原则;

一个软件实体应当尽可能少地与其它实体发生相互作用。

如果两个软件实体不需要直接通信,那就不应当发生直接的相互调用,可以通过第三方转发该调用。类应该对自己需要调用的类知道得最少。降低类之间的耦合度,提供相对独立性。

合成复用原则

合成复用原则(Composite Reuse Principle)尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系实现。

分为合成复用和继承复用两种:

合成复用:(采用组合或聚合,将对象纳入新对象)

优点:维持了类的封装性;对象间的耦合度低;复用的灵活性高

继承复用:

优点:简单,易实现

缺点:破坏类的封装性;耦合度高;限制复用灵活性

关于设计模式的分类

创建模式:设计模式之创建者模式(5种)-CSDN博客

结构型模式:更新ing

行为型模式:更新ing

相关推荐
星心源七境1 小时前
七境体系全解析:从六韬兵法到AI锁颜,一套贯穿古典智慧与现代应用的成长操作系统
人工智能·设计模式·设计
qq_297574672 小时前
设计模式系列文章(基础篇第21篇):迭代器模式——遍历聚合解耦,实现统一迭代访问
设计模式·迭代器模式
禅思院4 小时前
前端请求取消与调度完全指南:从 AbortController 到企业级优先级架构
前端·设计模式·前端框架
小bo波4 小时前
用匿名内部类优雅地计算方法执行时间
java·设计模式·性能测试·模板方法模式·lambda·代码优化·匿名内部类
写代码的小阿帆5 小时前
行为型设计模式之观察者(发布-订阅)模式
设计模式
王_teacher6 小时前
23种设计模式全解析(GoF 设计模式)
设计模式·软考·软件设计师·软考中级
阿坤带你走近大数据7 小时前
分别介绍下java主流的开发框架、设计模式与对应编程语言的高级特性
java·开发语言·设计模式
geovindu7 小时前
go: Coroutines Pattern
开发语言·后端·设计模式·golang·协程模式
Anastasiozzzz8 小时前
构建健壮软件系统的基石:深入解析面向对象设计七大原则
开发语言·javascript·设计模式·ecmascript
qq_297574671 天前
设计模式系列文章(基础篇第19篇):中介者模式——封装交互关系,解耦网状依赖
设计模式·交互·中介者模式