常用设计模式一句话概括

工厂模式

简单工厂模式

在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。
客户不能直接创建对象,只能是通过一个接口来创建对象。
在这里插入图片描述

工厂方法

定义了一个创建对象的接口,但由这个接口的子类决定要实例化哪个类。工厂方法把实例化操作推迟到子类。
在这里插入图片描述

抽象工厂

提供一个接口,用于创建 相关的产品族 。
在这里插入图片描述
在这里插入图片描述

原型(模板)模式

  1. 用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象

建造者模式(生成器模式)(Builder模式)

将一个复杂对象的构造和它的表示相分离,使同样的构建过程可以创建不同的表示。它将一个复杂的对象分解为多个简单的对象,一步一步地构造而成。产品的组成部分是不变的,但是每一部分是可以灵活选择的。

建造者(Builder)模式由产品、抽象建造者、具体建造者、指挥者等 4 个要素构成,现在我们来分析其基本结构和实现方法。

  1. 产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。
  2. 抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。
  3. 具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。
  4. 指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。
    在这里插入图片描述

应用场景

  1. 相同的方法,不同的执行顺序,产生不同的结果
  2. 产品有很多简单对象组成,产品的组成部分是不变的,但是每一部分可以灵活选择。

与工厂模式的区别

  1. 建造者模式唯一区别于工厂模式的是针对复杂对象的创建。也就是说,如果创建简单对象,通常都是使用工厂模式进行创建,而如果创建复杂对象,就可以考虑使用建造者模式。
  2. 建造者模式更加注重方法的调用顺序,工厂模式注重创建对象。

迭代器模式

提供一种顺序访问聚合对象元素的方法,并不暴露聚合对象的内部表示
在这里插入图片描述

适配器模式

把一个类的接口转换成另一个用户需要的接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
适配器模式(Adapter)包含以下主要角色。

  1. 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。
  2. 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。
  3. 适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。
    适配器模式分为类结构型模式和对象结构型模式,前者的类耦合度比较高,用的比较少。
    类适配器模式的结构图如下图 所示。
    在这里插入图片描述
    对象适配器模式的结构图如下图 所示。
    在这里插入图片描述
    其中适配器模式和迭代器模式都是在Java的容器里面使用了
    https://www.jianshu.com/p/1ab3209d0f65

策略模式

引入原因:当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等
策略模式是准备一组算法,并将这组算法封装到一系列的策略类里面,一个算法封装到一个策略类里面,一个策略类是抽象策略类的子类。然后有一个环境类,环境类里面有一个策略类的对象作为属性。通过改变环境类的这个策略类对象,来使用不同的算法。
在这里插入图片描述

10.责任链

使用场景:公司员工请假,根据请假天数的不同需要找到不同的领导来签字,比如请假两天需要找部门领导签字,请假5天需要找总经理签字。

在责任链模式中,部门领导,总经理就是一个个处理请求者。责任链模式
就是把让每一个处理请求者都指向下一个处理请求者,所有处理请求者连接成一条链,当某一个处理请求者不能处理这个请求或者不能完全处理这个请求的时候,就把这个请求传递给下一个处理请求者,让后者处理请求。
在这里插入图片描述

代理

由于某些原因目标对象不能被访问者直接访问到,需要提供一个代理,让调用者通过代理来访问目标对象。
实现的时候,代理类里面需要有目标对象的引用,这样就能够访问目标对象的方法和属性了。
在这里插入图片描述

装饰模式

指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。
或者也可以这么说,使用组合关系来创建一个包装对象来包裹真实对象,在保持真实对象的类结构不变的前提下,为其提供额外的功能。
装饰器模式强调的是增强自身,在被装饰之后你能够在被增强的类上使用增强后的功能。增强后你还是你,只不过能力更强了而已;代理模式强调要让别人帮你去做一些本身与你业务没有太多关系的职责(记录日志、设置缓存),https://zhuanlan.zhihu.com/p/97499017

主要优点:
采用装饰模式扩展对象的功能比采用继承方式更加灵活。
可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。

主要缺点:
装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。
在这里插入图片描述
装饰模式的参考资料
https://www.jianshu.com/p/1f3e6eeb54c3

12. 观察者模式

指多个对象间存在多对一的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

实现的时候,目标对象里面有一个观察者列表,观察者有response方法,当目标对象的状态发生变化的时候就会调用。当目标对象状态发生变化,就遍历观察者列表,调用观察者的response函数。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值