设计模式总结起来就是那23种,其中分为三类:创建型模式、结构型模式、行为型模式。
创建型模式一般用于创建类:
工厂方法
一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。
抽象工厂
当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。
建造者模式
将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
如: 车子分好几个部分:车身、轮子、底座。那么有一个工厂专门造车身、轮子、底座,组装者可以按照工序,先摆好地盘、装上轮子,接着盖上车身,好了车子造好了!!!
单例模式
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
如:我是副校长,学校只有一个正校长,盖章的事只能找他!!!
原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
如:这个鞋子是定做的,质量很好,我还想要一双,师傅你看你还能帮我照着这个样子在复制一双???
创建型模式稍微简单,下面看看结构型模式
门面模式
门面模式为了系统提供一个 统一的高层接口供外部客户使用。也是提供一个更高的层次的接口,使得子系统更容易使用
如:导购员
代理模式
对其他对象提供一种代理以控制对这个对象的访问(抽象主题角色、代理主题角色、真实代理对象)。
如:一个快递员的车子坏了,今天的快件送不了,那么另外一个快递员可以代他送今天的快件!
适配器模式
适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
如:原来手机上的2.5接口的耳机坏了,现在市面上只有3.5接口的耳机,怎么办,不可能换个手机吧?老板推荐你买个适配器,ok,可以使用了!
组合模式
又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。
组合模式让你可以优化处理递归或分级数据结构。有许多关于分级数据结构的例子,使得组合模式非常有用武之地。关于分级数据结构的一个普遍性的例子是你每次使用电脑时所遇到的:文件系统。文件系统由目录和文件组成。每个目录都可以装内容。目录的内容可以是文件,也可以是目录。按照这种方式,计算机的文件系统就是以递归结构来组织的。如果你想要描述这样的数据结构,那么你可以使用组合模式Composite。
职责模式
也叫装饰模式或油漆工模式
是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
如
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
桥模式
用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦
享元模式
它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。
下面看行为模式
模板模式
不用说了,很简单
备忘录模式
在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
角色有:发起人、备忘录、负责人
发起人:创建含有内部状态的备忘录对象,并使用备忘录对象存储状态
负责人:负责人保存备忘录对象,但不检查备忘录对象的内容
备忘录:备忘录对象将发起人对象的内部状态存起来,并保正其内容不被发起人对象之外的对象像读取
观察者模式
又称发布-订阅模式
一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。
如天气预报员发布了天气预报,那么会通知已经订阅了此类服务的群众。
职责链模式
用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合,唯一共同点是在他们之间传递request. 也就是说,来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去。
命令模式
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
如:举一个例子说明一下,玉帝传美猴王上天,玉帝创建了一个命令就是圣旨,然后指出圣旨的接受者美猴王,而太白金星只是传达命令的人。这个过程就是命令模式的应用。
这个好处就是玉帝将不会直接和美猴王打交道,他只需把命令封装在圣旨中交给太白金星传达即可其他的事他就不用问了。
状态模式
当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
切换状态,做不同的事
策略模式
定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
中介者模式
又叫调停者模式,用于模块间解耦,通过避免对象互相显式的指向对方从而降低耦合。
三个角色:抽象调停者、具体调停者、同事
如:房东、租户、中介的三者关系
解释器模式
简单的语法解释器构架
访问者模式
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。
相关推荐
"设计模式汇总_圣思园Java版"是一个专门针对Java程序员的资源集合,它包含了UML类图、Java源码和PDF文档,便于学习和理解各种设计模式。 1. **UML类图**:统一建模语言(UML)是一种图形化表示软件系统的方法,它...
此资源包括以下资料: <br>学习GoF设计模式的重要性.txt 设计模式逐个解析.rar 23种设计模式的实现(Java 版).rar DAO设计模式.rar C#设计模式.pdf 新版设计模式手册[C#].pdf JAVA设计模式...
在LabVIEW编程中,设计模式是一套预先定义好的结构和代码模板,用于解决特定的编程问题。设计模式能够帮助开发者提高代码的可重用性、可维护性以及可扩展性,同时还能降低错误的发生几率。 1. 标准状态机: 标准...
设计模式是一套被反复使用、多数人知晓、经过分类编目、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式通常包含以下几个基本要素:模式名称、问题、解决方案...
在软件开发领域,设计模式是一种经过验证的、通用的解决方案,用于解决常见的设计问题。C语言,虽然通常被认为是一门面向过程的编程语言,但在面向对象的设计思想下,同样可以应用设计模式。以下是对C语言中设计模式...
设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。这些模式都是经验丰富的软件开发者在长期实践中总结出来的,它们可以帮助我们写出更高质量、更具可维护性和...
设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。Java作为一款广泛应用的编程语言,其在设计模式上的应用广泛且深入。这里我们主要讨论的是23种经典的GOF...
代码详细说明设计模式的主要重点,项目中常用到的设计模式,适合中级程序员研究。
本文档汇总了LabVIEW中常见的两种设计模式:条件结构和标准状态机。 1. **条件结构**:条件结构在LabVIEW中扮演着逻辑判断的角色,它允许根据不同的条件执行不同的代码路径。这种模式通常用于决策流程,如根据输入...
Java设计模式面试题汇总 本文将对Java设计模式面试题进行总结,涵盖软件设计原则、设计模式的定义、分类、常见模式等内容。 软件设计原则: 软件设计原则是指在软件设计中需要遵守的一些规则和原则,这些原则可以...
个人搜集整理的23种设计模式,已经认真学习过,很好,与大家共享!
在IT领域,设计模式是解决常见软件设计问题的可复用解决方案,它们提供了一种标准的语言来描述在特定上下文中如何解决设计问题。对于C#开发者而言,掌握23种经典设计模式是提升代码质量和软件架构能力的重要途径。...
《23种经典设计模式UML类图汇总》是一个关于设计模式与UML结合使用的参考资料,主要涵盖了GOF(GoF, Gamma, Helm, Johnson, Vlissides四位作者)提出的23种设计模式。 这23种设计模式可以分为三大类别:创建型模式...
这里提供的资料汇总包含了多种资源,可以帮助我们深入理解Java设计模式。 首先,"Java设计模式-图解-附代码.doc"文档可能包含了一些常见的设计模式,如单例模式、工厂模式、观察者模式等,通过图文并茂的方式进行...
并整理二十三种设计模式的理论部分,综合汇总成这份Java设计模式(疯狂Java联盟版),希望对大家有所帮助。 本份帮助文档主要是为了向读者介绍二十三种设计模式,包括模式的描述,适用性,模式的组成部分,并附带...
《23种经典设计模式UML类图汇总.chm》文件很可能包含了这23种设计模式的统一建模语言(UML)类图,UML是一种图形化的表示方式,用于可视化系统的设计和结构,包括类、接口、协作和用例等元素。通过类图,我们可以...
在深入浅出Java设计模式的高清中文PDF文件中,首先以一个生活化的例子引出了工厂模式的概念,介绍了工厂模式在面向对象编程中的重要性和实用性。文档详细讲解了20多种Java设计模式,并且在讲解的过程中包含了丰富的...
设计模式是软件工程中的一种最佳实践,用于解决常见的设计问题并提供可重用的解决方案。在Java编程中,设计模式的应用极大地提高了代码的可读性、可维护性和可扩展性。根据《设计模式:可复用面向对象软件的基础》一...
### 23种设计模式学习汇总 #### 一、创建型设计模式 ##### 1. **抽象工厂模式(Abstract Factory)** - **定义**:抽象工厂模式提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。 - ...