设计模式
文章平均质量分 79
FootyzZ
这个作者很懒,什么都没留下…
展开
-
设计模式之责任链模式
定义: 责任链模式,多个对象处理请求时,为了避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链。并沿着这条链传递该请求,直到有对象处理它为止。责任链模式的重点就在一个“链”字上,沿着这个条链处理这个请求,返回结果。观察者模式是一种行为型设计模式。模型角色:抽象处理者角色:抽象处理逻辑,定义一个方法设定和返回下一个处理者;具体处理者: 具体的处理请求逻辑。接到请求后可以选择处理掉请求,或者将请求传递给下一个处理者。责任链设计模式在我印象中最深的就是OkHttp中拦截链的设计。下面是添加原创 2021-04-21 23:51:10 · 244 阅读 · 0 评论 -
设计模式之观察者模式
定义: 观察者模式也称发布/订阅模式。它定义对象间一种一对多的依赖关系,使得一个对象状态发生改变,所有依赖它的对象都能够得到通知并自动更新。观察者模式是一种行为型设计模式。模型角色:抽象主题角色: 即被观察对象,能添加,删除观察者,发出通知更新观察者。抽象观察者角色: 该接口为所有观察者定义了一个更新自己的方法。具体主题角色: 具体被观察者对象,保存了所有相关的观察者对象,当自身状态发生变化时,发出更新通知。具体观察者角色: 实现抽象观察者更新方法,根据被观察者改变自动更新。以一个时间+铃响原创 2021-03-31 23:57:30 · 195 阅读 · 0 评论 -
设计模式之适配器模式
定义: 将一个类的接口变换成客户端所期望的另一种接口,使得原本因为接口不匹配而无法共同工作的两个类能够在一起工作。适配器模式是一种结构型设计模式。模型角色:目标角色: 要转换成的目标,通常声明为接口。适配者角色: 需要被转换成目标角色的角色。适配器角色: 将适配者转换成目标,是适配器模式的核心。通常使用继承或者类关联实现目标转换。场景模拟: 市场上有些手机是有充电孔跟耳机孔的(米max),有些是没有耳机孔只有充电孔的(米8)。现有一副耳机,对于有专门耳机孔的手机很容易就可以使用。但是没有耳机孔原创 2020-06-28 17:01:32 · 183 阅读 · 0 评论 -
设计模式之组合模式
定义: 也叫合成模式,将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具体有一致性。组合模式是一种结构型设计模式。组合模式涉及的模型角色:抽象构件: 定义组合对象的共有方法和属性,规范默认接口。叶子构件: “叶子对象”,其以下没有其他分支,声明参与组合对象的行为接口。树枝构件: 参与组合对象、其下有分支的树枝对象。它的作用是将树枝和叶子组合成一个树形结构,并且定义出管理子对象的方法。场景模拟:一个很典型的例子就是电脑里的文件夹。在一个总文件夹里面有若干文原创 2020-06-10 14:45:00 · 241 阅读 · 0 评论 -
设计模式之命令模式
定义: 将请求封装成对象,使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销或者恢复功能。命令模式是一种行为型设计模式。角色模型:抽象命令角色模型: 一个声明了所有具体命令类的抽象接口,定义需要执行的命令;具体命令角色模型: 持有接收者实例,实现命令方法,在方法内调用接收者的行为;调用者: 负责调用命令对象执行请求;接收者: 负责具体执行请求;下面是一个使...原创 2020-04-03 10:11:22 · 159 阅读 · 0 评论 -
设计模式之状态模式
定义: 当一个对象内在状态改变时允许改变行为,这个对象像是改变了其类型。状态模式是一种行为型设计模式。抽象状态角色 : 封装抽象行为的接口;具体状态角色 : 实现一种状态下对应的具体行为;环境角色 : 持有状态类的实例,返回当前状态并负责具体状态的切换,挺像一个管理器的嗷。举个例子,一天有24小时,以每个小时为一种状态,记录每种状态下要做的事情://抽象状态,只有一个行为:查看当前在...原创 2020-03-17 23:42:53 · 142 阅读 · 0 评论 -
设计模式之外观模式
定义: 每个子系统的外部与其内部的通信必须通过同一个对象进行。即提供一个访问子系统的的接口,只有通过这个接口才能访问子系统的行为。外观模式又成为门面模式,是一种比较简单的设计模式。外观模式是一种结构型设计模式。涉及到的结构模型:外观角色 : 为众多的子系统提供一个公共的访问接口,该角色没有实际的业务逻辑,只是一个委托类。子系统角色 : 完成系统功能众多类的集合体,而不是指一个类。下面用一...原创 2020-03-10 23:09:53 · 174 阅读 · 0 评论 -
设计模式之装饰模式
定义: 指在不改变现有对象结构的情况下,动态地增加对象额外功能。属于对象结构型设计模式。装饰模式的模型角色:抽象产品模型: 具体产品与抽象装饰的父类,一般使用接口定义;具体产品模型: 实现抽象产品,提供抽象产品的具体实现,也是升级产品(具体装饰)基本模型;抽象装饰模型: 实现抽象产品,持有需要升级的产品(具体产品)的实例;具体装饰模型: 具体产品的升级版,有具体产品的功能。继承抽象装饰...原创 2020-03-06 09:17:17 · 161 阅读 · 0 评论 -
设计模式之桥接模式
定义: 将抽象与实现解耦,使得俩者可以独立的变化。这种模式将抽闲部象与实现部分联系起来,就像是一座桥,将桥的两岸连接,构成一个整体。桥接模式是一种行为型设计模式。桥接模式的4个模型角色:抽象化角色模型: 抽象角色,持有实现化角色引用;具体抽象化模型: 继承至抽象化角色,实现抽象化角色定义的方法逻辑并扩展自己本身的特性;实现化角色模型: 通常声明为接口,提供对应的逻辑方法;具体实现化角...原创 2020-03-05 16:28:43 · 195 阅读 · 0 评论 -
设计模式之备忘录模式
备忘录模式 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。模型角色:备忘角色: 本身需要恢复到某一时刻状态,提供创建备忘录和恢复备忘录的基本功能;备忘录管理角色: 管理备忘录,保存或者返回备忘录;备忘录角色: 备忘录对象,记录备忘角色的某种状态,提供这些状态;应用场景:需要用到保存数据并且能够恢...原创 2019-11-18 23:29:46 · 173 阅读 · 0 评论 -
数据结构之享元模式
享元模式 “共享单车”定义: 使用共享对象可以有效地支持大量的细粒度的对象。享元对象做到共享的关键是区分内部状态和外部状态。可以降低大量重复的,细粒度的类在内存中的开销。也是一种行为型模式。4个模型角色:抽象享元角色: 享元对象的父类,提供具体享元模型的公共逻辑接口。需要外部状态操作时可以通过参数的形式将外部状态传入;具体享元角色: 实现抽象享元接口,提供具体的逻辑处理;享元工厂:...原创 2019-10-29 11:06:04 · 236 阅读 · 0 评论 -
数据结构之建造者模式
定义: 将一个复杂对象的构建与他的表示分离,使得可以使用同样的构建构成构成不同的表示。4种模型:产品模型: 特定的产品,具有复杂的组成部分,需要建造的实例;抽象建造者: 规范产品模型的各个组成部分,并进行抽象;具体建造者: 实现抽象建造模型的所有方法,并且提供一个创建好的产品对象;导演者(或生产者)模型: 负责产品部分建造的顺序;应用场景:相同的方法,不同的执行顺序产生不同的...原创 2019-10-28 21:12:02 · 157 阅读 · 0 评论 -
设计模式之策略模式
策略模式定义:针对对一组算法,将每一个算法封装到具有公共接口的独立类中,使得他们可以相互替换,可以在不影响到客户端情况下发生改变。策略模式是一种行为型设计模式。模式模型:抽象策略模型:定义为公共接口,声明策略; 具体策略:实现抽象策略模型,提供具体的策略计算逻辑; 环境模型(策略持有者):包含策略模型引用,策略方法的调用等,可以是独立的一个类也可以就是调用策略本身对象。抽象策略只是作...原创 2019-10-25 16:02:45 · 243 阅读 · 0 评论 -
设计模式之代理模式
代理模式,为其他对象提供一种代理来控制这个对象的访问。生活中有很多这样子的例子。如果你喜欢购物,相信你对代购不会陌生。那么你去找到代购,代购为你买回来商品这样行为方式就 是一种代理模式。如果你喜欢玩游戏你又不想自己亲手或者技术有限,你去找到代练,让他们为你上分,升级,这样的行为方式也是一种代理模式。在代理模式下涉及到的角色模型:抽象行为模型:通常使用接口实现。由代理类跟代理角色共同实现,定义了...原创 2019-06-20 10:46:45 · 271 阅读 · 1 评论 -
设计模式之抽象工厂模式
抽象工厂模式意为提供一个可以创建一组或者相关的对象的接口,跟工厂模式很相似,工厂模式创建的是同种类别下的不同产品,抽象工厂是创建多种相关类别下的不同产品。比如工厂模式是鱼,那么它对应产品可以是鲤鱼,草鱼,鲸鱼。而放到抽象工厂模式,它就不只是可以创建鱼这一类,还可以是藻类,如红藻,绿藻。还可以是鱼生活的地方,如海洋,河流,池塘,油锅。抽象工厂的模型角色跟工厂模式模型一样:1.抽象工厂:模式核心,...原创 2019-05-28 14:00:38 · 142 阅读 · 0 评论 -
设计模式之工厂方法模式
工厂模式是一种创建型设计模式。定义一个用与创建对象的接口,让子类实现决定创建哪一个类,使类的实例化延迟到它的子类。工厂模式的模型角色:1.抽象工厂:模式核心,所有具体工厂都要实现这个接口。包含创建同种类别产品的方法 2.具体工厂:实现抽象工厂,根据具体需要创建具体产品对象。 3.抽象产品:定义产品的共性。 4.具体产品:具体的产品,拥有所有产品的共性,也拥有自己的特性。以去饮料店买的饮...原创 2019-05-17 17:21:54 · 191 阅读 · 0 评论 -
设计模式之原型模式
原型模式就是用已存在的对象实例,通过复制该实例生成一个相同或类似的对象。而且使用原型模式非常高效简便。实现思路:在java下,所有的类的超类Object有提供对象的clone()方法,所以使用java实现这种原型模式还是比较简单的。涉及到的模型角色:1.抽象原型:由接口实现,继承至Cloneable接口,给出所有具体原型需要的接口,至少有一个clone 的方法; 2.具体原型:继承抽象原...原创 2019-05-16 21:02:19 · 137 阅读 · 0 评论 -
设计模式之单例模式
单例模式是最常见,最容易理解的一种设计模式。它保证了应用内一个类只存在一个实例。可以节省内存资源,避免了频繁地创建销魂同一个对象,提高性能。单例模式最基础的有2种写法。分别是懒汉式跟饿汉式。懒汉式:public class Single { private Single(){} private static Single instance = null; /*...原创 2019-05-15 21:00:24 · 244 阅读 · 2 评论