23设计模式
诚o
这个作者很懒,什么都没留下…
展开
-
23种设计模式-创建型模式-单例模式
单例模式:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式的特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。饿汉式单例类:public class EagerSingleton { private static EagerSingleton inst...原创 2018-10-01 00:24:13 · 208 阅读 · 0 评论 -
23种设计模式-结构型模式-外观模式
外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。1. 外观模式概述不知道大家有没有比较过自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、茶具和开水,如图1(A)所示,而去茶馆喝茶,最简单的方式就是跟茶馆服务员说想要一杯什么样的茶,是铁观音、碧螺...转载 2019-06-21 21:04:28 · 1290 阅读 · 0 评论 -
23种设计模式-行为型模式-访问者模式
在患者就医时,医生会根据病情开具处方单,很多医院都会存在以下这个流程:划价人员拿到处方单之后根据药品名称和数量计算总价,而药房工作人员根据药品名称和数量准备药品,如下图所示。在软件开发中,有时候也需要处理像处方单这样的集合对象结构,在该对象结构中存储了多个不同类型的对象信息,而且对同一对象结构中的元素的操作方式并不唯一,可能需要提供多种不同的处理方式。在设计模式中,有一种模式可以满足上述要求,...转载 2019-06-21 20:31:00 · 714 阅读 · 0 评论 -
23种设计模式-结构型模式-装饰模式
1、意图:动态地给一个对象添加一些额外的职责。就增加功能来说, Decorator模式相比生成子类更为灵活。该模式以对客 户端透明的方式扩展对象的功能。2、适用环境(1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。(2)处理那些可以撤消的职责。(3)当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的 子类,使得子类数目呈...转载 2019-06-20 20:35:50 · 221 阅读 · 0 评论 -
23种设计模式-结构型模式-组合模式
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。大话设计模式中程杰老师给出的定义是,组合模式:将对象组合成树形结构以表示”部分-整体”的层次结构。组...转载 2019-06-20 20:11:14 · 331 阅读 · 0 评论 -
23种设计模式-行为型模式-迭代器模式
迭代器模式定义迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。迭代器模式的角色构成(1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法:取得下一个元素的方法next(),判断是否遍历结束的方法hasNext()),移出当前对象的方法remove(),(2)具体迭代器角色(Concrete Iter...转载 2019-04-16 20:36:24 · 170 阅读 · 0 评论 -
23种设计模式-行为型模式-中介者模式
在我们的生活中处处充斥着“中介者”,比如你租房、买房、出国留学、找工作、旅游等等可能都需要那些中介者的帮助,同时我们也深受其害,高昂的中介费,虚假信息。在地球上最大的中介者就是联合国了,它主要用来维护国际和平与安全、解决国际间经济、社会、文化和人道主义性质的问题。国与国之间的关系异常复杂,会因为各种各样的利益关系来结成盟友或者敌人,熟话说没有永远的朋友,也没有永远的敌人,只有永远的利益!所以国与国...转载 2019-04-16 20:14:41 · 162 阅读 · 0 评论 -
23种设计模式-行为型模式-策略模式
面向实现编程的弊端举一个简单的动物界的例子,我们需要写一段代码,包含以下要素:鸭子类,鸭子的若干子类,实现一些方法。惯用的编程思路:1、写一个鸭子类Duck,写几个方法,比如鸭子飞行的方法fly(),鸭子叫的方法quack()。2、写鸭子的子类,比如绿头鸭MallardDuck,继承Duck类。3、在子类中重写以上两个方法。这种编程思路的弊端:1、代码冗杂:在代码量少且代码稳...转载 2019-04-12 19:18:12 · 186 阅读 · 0 评论 -
23种设计模式-行为型模式-备忘录模式
引子我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状 态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返 回。下象棋的时候,可以反悔。这时我们便可以使用备忘录模式来实现。定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复...转载 2019-04-15 20:58:30 · 226 阅读 · 0 评论 -
23种设计模式-行为型模式-观察者模式
概述它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象...转载 2019-03-28 21:45:28 · 227 阅读 · 0 评论 -
23种设计模式-行为型模式-责任链模式
1. 简介责任链模式:如果有多个对象都有机会处理请求,责任链可使请求的发送者和接受者解耦,请求延着责任链传递,直到有一个对象处理了它为止注意:责任链模式也叫职责链模式。2. 结构职责链模式主要包含以下角色:抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处...转载 2019-03-27 21:39:53 · 257 阅读 · 0 评论 -
23种设计模式-行为型模式-状态模式
1. 简介 在软件开发过程中,应用程序中的有些对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态会发生改变,从而使得其行为也随之发生改变。如人的情绪有高兴的时候和伤心的时候,不同的情绪有不同的行为,当然外界也会影响其情绪变化。 对这种有状态的对象编程,传统的解决方案是:将...转载 2019-04-03 21:44:44 · 557 阅读 · 0 评论 -
23种设计模式-行为型模式-命令模式
1.1. 模式动机 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。 命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求...转载 2019-03-22 21:07:59 · 187 阅读 · 0 评论 -
23种设计模式-行为型模式-解释器模式
为人处事是一门大学问,察言观色、听懂弦外之音都是非常重要的,老板跟你说“XX你最近表现平平啊,还得要多努力”,如果你不当回事,平常对待,可能下次就是“XX,恩,你人还是不错,平常工作也很努力,但是我想这份工作可能不是很适合你…..”。又比如你老大说“XX,你最近表现不错,工作积极性很高啊!继续保持啊!”,你高兴乐呵着心想是不是老板要给我...转载 2019-03-29 19:24:29 · 136 阅读 · 0 评论 -
23种设计模式-创建型模式-建造者模式(又名生成器模式)
1. 描述 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种部件。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,可以通过建造者模式对其进行设计与描述,建造者模式可以将组成部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而...原创 2019-01-23 17:06:56 · 663 阅读 · 0 评论 -
23种设计模式-创建型模式-工厂模式(包括工厂方法模式和抽象工厂模式)
hh原创 2019-01-23 15:13:46 · 236 阅读 · 0 评论 -
23种设计模式-结构型模式-适配器模式
一、结构型模式: 结构型模式(Structural Pattern): 描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构 结构型模式可以分为类结构型模式和对象结构型模式:类结构型模式关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。对象结构型模式关心类与对象的组合,通过关联关...转载 2019-04-12 21:19:06 · 177 阅读 · 0 评论 -
23种设计模式-创建型模式-原型模式(通过复制生成实例)
一、原型模式介绍 在面向对象系统中,使用原型模式来复制一个对象自身,从而克隆出多个与原型对象一模一样的对象。 另外在软件系统中,有些对象的创建过程较为复杂,而且有时候需要频繁创建,原型模式通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的意图所在。1.1 定义GOF给出的原型模式定义如下:Specify the k...转载 2019-01-27 11:19:40 · 499 阅读 · 0 评论 -
23种设计模式-结构型模式-享元模式
一、简介享元模式英文名Flyweight,又叫蝇量模式,享元模式主要关注的有两个点:共享对象和细粒度的对象,由于分配太多对象会导致应用性能下降,同时造成内存溢出,享元模式就是为了解决这类问题的共享技术。所谓享元模式就是运行共享技术有效地支持大量细粒度对象的复用。系统使用少量对象,而且这些都比较相似,状态变化小,可以实现对象的多次复用。共享模式是支持大量细粒度对象的复用,所以享元模式要求能够共...转载 2019-06-21 21:27:50 · 215 阅读 · 0 评论