浅谈设计模式(目的、七大原则、UML图、具体分类、举例源码、优缺点)描述

目录

1、设计模式目的

2、设计模式七大原则

3、UML 类图关系

4、设计模式分类(5 + 7 + 11)

4.1、分类模式

4.2、具体分类

5、23 种设计模式定义

6、23种设计模式举例、源码及优缺点


1、设计模式目的

设计模式是为了让程序(软件),具有更好的

  • 可复用性
  • 可读性
  • 可扩展性
  • 可靠性
  • 可维护性
  • 灵活性
  • 高内聚,低耦合

2、设计模式七大原则

  • 单一职责原则(SRP,Single Responsibility Principle):一个类只负责一项职责
  • 接口隔离原则(ISP,Interface Segregation Principle):一个类对另一个类的依赖应该建立在最小的接口上
  • 依赖倒转原则(DIP,Dependence Inversion Principle):面向接口编程
  • 里氏替换原则(LSP,Liskov Substitution Principle):用聚合、组合代替继承
  • 开闭原则(OCP,Open Closed Principle):对扩展开放,对修改关闭
  • 迪米特法则(LoD,Law of Demeter):最少知道原则(LKP,Least Knowledge Principle),只与直接的朋友通信
  • 合成复用原则(CRP,Composite Reuse Principle):尽量使用合成/聚合的方式,而不是使用继承

3、UML 类图关系

  • 依赖(dependence)
  • 泛化(Generalization):即继承
  • 实现(Implementation)
  • 关联(Association):单向一对一关系;双向一对一关系
  • 聚合(Aggregation)
  • 组合(Composition)

4、设计模式分类(5 + 7 + 11)

4.1、分类模式

  • 创建型模式:主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成
  • 结构型模式:用于描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象
  • 行为型模式:用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配

4.2、具体分类

  • 创建型模式(5种):单例模式、工厂模式、抽象工厂模式、原型模式、建造者模式
  • 结构型模式(7种):适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
  • 行为型模式(11种):模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式

5、23 种设计模式定义

  1. 单例模式(Single Pattern):某个类只能存在一个对象实例
  2. 工厂模式(Factory Pattern):由工厂对象决定创建出哪种产品类的实例
  3. 原型模式(Prototype Pattern):用原型实例指定创建对象种类,并通过拷贝原型创建新的对象
  4. 建造者模式 / 生成器模式(Builder Pattern):将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象
  5. 适配器模式(Adapter Pattern):将某个类的接口转换成客户端期望的另一个接口表示
  6. 桥接模式(Bridge Pattern):将实现与抽象分离,放在两个不同的类层次中,可以独立改变
  7. 装饰者模式(Decorator Pattern):动态地将新功能附加到对象上
  8. 组合模式 / 部分整体模式(Composite Pattern):依据树形结构来组合对象,用来表示部分以及整体层次
  9. 外观模式 / 过程模式(Facade Pattern):为调用端提供统一的调用接口
  10. 享元模式 / 蝇量模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象
  11. 代理模式(Proxy Pattern):通过代理对象访问目标对象
  12. 模板模式 / 模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟到子类中
  13. 命令模式(Command Pattern):将发起请求的对象与执行请求的对象解耦
  14. 访问者模式(Visitor Pattern):将数据结构与数据操作分离
  15. 迭代器模式(Iterator Pattern):提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素
  16. 观察者模式 / 发布-订阅模式(Observer Pattern):对象之间多对一依赖的一种设计方案
  17. 中介者模式 / 调停模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互
  18. 备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态
  19. 解释器模式(Interpreter Pattern):给定一个语言并定义其文法表示,使用该解释器来解释语言中的句子
  20. 状态模式(State Pattern):解决对象在多种状态转换时,需要对外输出不同的行为的问题
  21. 策略模式(Strategy Pattern):定义算法族,分别封装起来,让他们之间可以互相替换
  22. 职责链模式 / 责任链模式(Chain of Responsibility Pattern):为请求创建一个接收者对象的链

6、23种设计模式举例、源码及优缺点

分类

设计模式

举例

源码

优点

缺点

创建型

单例模式

Singleton

JDK 中java.lang.Runtime

节省资源,提高性能

~

工厂模式

披萨店

JDK 中Calendar

统一管理,便于维护

~

原型模式

克隆羊

Spring 中ApplicationContext

简化过程,提高效率

复杂;违背 OCP

~

建造者模式

盖房子

JDK 中StringBuilder

解耦创建过程

结构型

适配器模式

插座

SpringMVC 中HandlerAdapter

兼容性

~

桥接模式

手机

JDBC 中Driver

分离抽象与实现

~

装饰者模式

星巴克咖啡

JDK 中FilterlnputStream

动态扩展功能

~

组合模式

学校院系

JDK 中HashMap

明确部分与整体层次

~

外观模式

影院管理

MyBatis 中Configuration

屏蔽细节,简化操作

过多不利于维护

~

享元模式

网站展示

JDK 中Integer

降低内存,提高效率

复杂

~

代理模式

教师教书

JDK 中Proxy

扩展功能,更加安全

行为型

模板模式

豆浆制作

Spring 中AbstractApplicationContext

统一算法,代码复用

过多不利于维护

~

命令模式

智能生活

Spring 中JdbcTemplate

解耦请求发起与执行

复杂

~

访问者模式

测评系统

解耦数据结构与操作

违背迪米特、依赖倒转

~

迭代器模式

学校院系

JDK 中ArrayList

统一遍历

过多不利于维护

~

观察者模式

天气预报

JDK 中Observable

动态添加三方

~

中介者模式

智能家庭

封装交互

复杂

~

备忘录模式

游戏角色状态恢复

方便恢复状态

占用资源,消耗内存

~

解释器模式

四则运算

Spring 中SpelExpressionParser

可扩展性

调试复杂;效率低

~

状态模式

APP 抽奖

借贷平台

分离状态

过多不利于维护

~

策略模式

鸭子

JDK 中Comparator

分离不变与变化

过多不利于维护

~

职责链模式

采购审批

SpringMVC 中HandlerExecutionChain

分离请求与处理

调试复杂;影响性能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值