设计模式概述

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

分类

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

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

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

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

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

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

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

设计原则

单一职责原则

单一职责原则(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

相关推荐
Zane19943 天前
一个 new 就能创建对象,为什么还要拆出单例、工厂、建造者、原型四种模式?
设计模式
怕浪猫4 天前
一行命令复刻爆款视频,我把 Hypit 从安装跑到了出片
人工智能·设计模式·程序员
Zane19944 天前
函数式编程里的函数,其实不是你天天写的那个函数——三大编程范式的边界在哪
设计模式
Zane19945 天前
策略模式现在该不该上?一次讲清楚过度设计和设计不足怎么找平衡
设计模式
她说..5 天前
常见设计模式-模板方法模式
java·spring·设计模式·springboot
xiaofeiyang1505 天前
第六章 · 桥接 — 三支毛笔,画出九种颜色
设计模式
Shadow(⊙o⊙)6 天前
OTOL设计模式 One Thread One Loop
服务器·网络·设计模式
sarasuki7 天前
如何让LLM 能在半夜偷偷打开网易云呢?
人工智能·设计模式·agent
小王师傅667 天前
【设计模式】装饰模式(四):框架源码实战——从 Java I/O 到 Spring 到 MyBatis
java·设计模式
执明wa7 天前
Android RecyclerView 多类型, 多种 Item
android·xml·开发语言·设计模式·android studio