![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 97
java设计模式,反模式,应用场景
孔子-说
成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!
屡战屡败,屡败屡战
失败是我无奈的宿命
坚韧是我不屈的灵魂
展开
-
23种软件设计模式
转自软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。原创 2021-08-05 09:03:35 · 779 阅读 · 1 评论 -
关于23种设计模式的有趣见解
在网上看见了这篇文章,作者以轻松的语言比喻了java的32种模式,有很好的启发作用。 创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请原创 2008-07-15 11:39:00 · 462 阅读 · 0 评论 -
JAVA设计模式之状态模式
转自http://www.kongzid.com/archives/design19,状态模式,又称状态对象模式(Pattern of Objects for States),状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。...原创 2019-12-04 16:20:07 · 1665 阅读 · 0 评论 -
JAVA设计模式之建造者模式
转自http://www.kongzid.com/archives/design3,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式是一步一步创建一个复杂对象的创建型模式,它允许使用者在不知道内部建造细节的情况下,可以更精细的控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,是的构建过程和不见得表示隔离开来。因为一个复杂的对象有很多大量组成部分,如电脑,有主机,显示器,操作...原创 2019-11-19 14:56:34 · 5158 阅读 · 2 评论 -
JAVA设计模式之桥接模式
转自http://www.kongzid.com/archives/design9,桥接模式(Bridge Pattern),又称为柄体(Handle and Body)模式或接口(Interface)模式。将抽象部分与它的实现分离,并不是说让抽象类与其派生类分离,而是用抽象类和它的派生类用来实现自己的对象。(将抽象化(Abstraction)与实现化Implementation)脱耦,使得二者可以独立地变化)从众多的事物中抽取出共同的、本质...原创 2019-11-18 16:28:30 · 594 阅读 · 0 评论 -
JAVA设计模式之中介者模式
转自http://www.kongzid.com/archives/design21,定义一个对象来封装一系列对象的交互,中介者模式使各个对象之间不需要相互引用,从而使得其松耦合,而且用户可以独立地改变他们之间的交互。(当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。)下图右边是使用中介者模式的示例图。没有使用中介者之前,对象间互相依赖互相调用,错综复杂,...原创 2019-12-12 17:08:43 · 856 阅读 · 0 评论 -
JAVA设计模式之装饰器模式
转自http://www.kongzid.com/archives/design6,装饰器模式又名包装(Wrapper)模式。装饰器模式以对客户端透明的方式拓展对象的功能,是继承关系的一种替代方案。装饰器模式(Decorator)优缺点装饰器模式是一种结构型设计模式。其主要优点如下:装饰模式与继承关系的目的都是要拓展对象的功能,但是装饰模式可以提供比继承更多的灵活性。装饰模式允许系统动态决定“贴上”一个需要的“装饰”...原创 2019-11-15 15:45:51 · 370 阅读 · 0 评论 -
JAVA设计模式之享元模式
转自http://www.kongzid.com/archives/design11,如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用都创建新的对象。目的是提高系统性能。采用一个共享来避免大量拥有相同内容对象的开销。这种开销中最常见、直观的就是内存的损耗。享元模式运用共享技术(共享池)有效地支持大量细粒度对象的复用(减少对象数量),通常与工厂模式一起使用。为了减少不必要内存消耗,将多个对同一对象的访问集...原创 2019-11-19 10:23:04 · 558 阅读 · 0 评论 -
JAVA设计模式之组合模式
转自http://www.kongzid.com/archives/design10,组合(Composite)模式是一种对象的行为模式。将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式的本质:统一叶子对象和组合对象。组合模式的目的:让客户端不再区分操作的是组合对象还是叶子对象,而是以一个统一的方式来操作。从上图可以看出,文件系统是一个树结构,树上长有节点。树的...原创 2019-11-18 16:59:56 · 3451 阅读 · 0 评论 -
JAVA设计模式之备忘录模式
转自http://www.kongzid.com/archives/design18,备忘录模式又叫做快照模式,指在不破坏封装性的前提下,获取到一个对象的内部状态,并在对象之外记录或保存这个状态。在有需要的时候可将该对象恢复到原先保存的状态。我们相当于把对象原始状态备份保留,所以叫备忘录模式。备忘录模式能记录一个对象的内部状态,当用户后悔时能撤销当前操作,使数据恢复到它原先的状态。其实很多应用软件都提供了这项功能,如 Word、记事本、Ph...原创 2019-12-04 11:32:05 · 395 阅读 · 0 评论 -
JAVA设计模式之原型模式
转自http://www.kongzid.com/archives/design4,原型(Prototype)模式是一种对象创建型模式,他采取复制原型对象的方法来创建对象的实例。使用原型模式创建的实例,具有与原型一样的数据。 原型模式的特点: 1、由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。 2、目标对象是原型对象的一个克隆。也就是说,通过原型模式创建的对象,不仅仅与原型对象具有相同的结构,还与...原创 2019-11-19 16:39:12 · 1175 阅读 · 0 评论 -
JAVA设计模式之3种工厂模式
转自http://www.kongzid.com/archives/design1,创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建型...原创 2019-11-19 11:33:53 · 3749 阅读 · 0 评论 -
JAVA设计模式之代理模式
转自http://www.kongzid.com/archives/design7,为其他对象提供一个代理以控制对某个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。即代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。代理类与委托类通常会存在关联关系,通常需要实现同一个接口。一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现...原创 2019-11-15 16:54:54 · 435 阅读 · 1 评论 -
JAVA设计模式之单例模式(6种实现)
转自http://www.kongzid.com/archives/design2,单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。单例的实现主要是通过以下两个步骤:将该类的构...原创 2019-11-19 12:19:55 · 836 阅读 · 0 评论 -
JAVA设计模式之模板方法模式
转自http://www.kongzid.com/archives/design13,模板方法模式,定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。模板方法模式实际上是封装了一个固定流程,该流程由几个步骤组成,具体步骤可以由子类进行不同实现,从而让固定的流程产生不同的结果。(抽象封装流程,具体进行实现)模板方法模式(TemplateMethod...原创 2019-11-28 16:48:07 · 452 阅读 · 0 评论 -
JAVA设计模式之责任链模式(职责链模式)
转自http://www.kongzid.com/archives/design16,为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。责任链模式优缺点责任链模式是一种对象行为型模式,其主要优点如下。降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其...原创 2019-11-12 10:47:26 · 1206 阅读 · 0 评论 -
JAVA设计模式之访问者模式
转自:http://www.kongzid.com/archives/design20,表示一个作用于其对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对...原创 2019-12-10 16:49:10 · 382 阅读 · 0 评论 -
JAVA设计模式之命令模式
转自http://www.kongzid.com/archives/design17,命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。其别名为动作(Action)模式或事务(Transaction)模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。(将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。)命令...原创 2019-11-29 11:57:01 · 2965 阅读 · 0 评论 -
JAVA设计模式之外观模式(门面模式)
转自http://www.kongzid.com/archives/design8,外观模式是隐藏了系统的复杂性,能够为子系统中的一组接口提供一个统一的接口。客户在使用系统时不必和子系统打交道了,降低了客户和子系统间的耦合。外观模式/门面模式(Facade)优缺点外观模式是一种结构型模式,其主要优点如下。减少客户端关联的类。使客户端关联子系统的类减少,使用子系统更加容易。 实现客户端和子系统的松耦合。子系统相互独立,变化不...原创 2019-11-15 14:03:30 · 388 阅读 · 0 评论 -
JAVA设计模式之策略模式
转自http://www.kongzid.com/archives/design12,定义了不同的算法,分别分装起来,让他们可以互相替换,即使算法变化了,也不会影响到使用算法的用户。策略模式让算法独立于使用它的客户而独立变化。策略模式本质是:分离算法,选择实现。通俗来讲:策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或者增加新的算法。并且由客户端决定调用哪个算法。策略模...原创 2019-11-21 11:54:18 · 980 阅读 · 0 评论 -
JAVA设计模式之适配器模式
转自http://www.kongzid.com/archives/design5,把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。用电器来打个比喻:有一个电器的插头是三脚的,而现有的插座是两孔的,要使插头插上插座,我们需要一个插头转换器,这个转换器即是适配器。适配器模式(Adapter)优缺点适配器模式是一种结构型设计模式。其主要优点如下:更好的复用性:系统需要使用...原创 2019-11-15 14:35:43 · 377 阅读 · 0 评论 -
JAVA设计模式之观察者模式
转自http://www.kongzid.com/archives/design14,指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式(Observer)优缺点观察者模式是一种行为型设计模式。最重要的作用就是解耦!将观察者与被观察者解耦,使得他们之间的依赖性更小。其主要优点如下:降低了目标与观察者...原创 2019-11-28 17:13:56 · 751 阅读 · 0 评论 -
JAVA设计模式之迭代器模式
转自http://www.kongzid.com/archives/design15,用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。该模式提供了一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。(可以解决用不同的方式来遍历整个聚合对象)。在程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方...原创 2019-11-29 10:27:31 · 342 阅读 · 0 评论