转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40031567
今天来对这23种设计模式做个总结。咱使用设计模式的目的是为了可重用代码、让代码更容易被他人理解、保证代码可靠性,当然设计模式并不是万能的,项目中的实际问题还有具体分析。咱不能为了使用设计模式而使用,而是在分析问题的过程中,想到使用某种设计模式能达到咱需要的效果,而且比不使用设计模式更有优势,那么咱该考虑使用设计模式了。
一、设计模式的一般分类
创建型(Creator)模式(共5种):单例、原型、建造者、工厂方法、抽象工厂。
结构型(Structure)模式(共7种):适配器、代理、外观、桥接、组合、享元、装饰者。
行为型(Behavior)模式(共11种):策略、观察者、模板方法、迭代器、责任链、命令、备忘录、状态、访问者、中介者、解释器。
二、下面谈谈我对这23种设计模式的理解
1、创建型(Creator)模式(共5种)
①单例(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。实现方式主要有饿汉式和懒汉式两种。
②原型(Prototype):该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。实现方式主要有浅复制和深复制两种。浅复制的关键是super.clone();而深复制,需要采用二进制流的形式写入当前对象,再对其进行读取。
③建造者(Builder):该模式是将各种产品集中起来进行管理。将很多功能集成到一个类里,这个类可以创造出比较复杂的东西。它关注的是创建复合对象,多个部分。
④工厂方法(Factory method):调用工厂里的方法来生产对象(产品)的。它有3种实现方式:1)普通工厂模式:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建)。2)多个工厂方法模式:是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。3)静态工厂方法模式:将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。如果你想使用工厂方法模式可以优先选择:静态工厂方法模式。
⑤抽象工厂(Abstract factory):顾名思义,就是把工厂抽象出来,不同的工厂生产不同的产品。
2、结构型(Structure)模式(共7种)
①适配器(Adapter):将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。1)类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。2)对象的适配器模式:当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个Adapter类,持有原类的一个实例,在Adapter类的方法中,调用实例的方法就行。3)接口的适配器模式:当不希望实现一个接口中所有的方法时,可以创建一个抽象类Adapter实现所有方法,我们写别的类的时候,继承抽象类即可。
②代理(Proxy):代理模式其实就是多一个代理类出来,替原对象进行一些操作。比如咱有的时候打官司需要请律师,因为律师在法律方面有专长,可以替咱进行操作表达咱的想法,这就是代理的意思。有两种实现方式:静态代理(不使用JDK里面的方法)、动态代理(InvocationHandler和Proxy)。
③外观(Facade):也称门面模式。外观模式是为了解决类与类之间的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口。
④桥接(Bridge): 把事物和其具体实现分开(抽象化与实现化解耦),使他们可以各自独立的变化。桥接模式其实就是一种将N*M转化成N+M组合的思想。
⑤组合(Composite):组合模式有时又叫部分-整体模式,将对象组合成树形结构来表示“部分-整体”层次结构。
⑥享元(Flyweight):运用共享的技术有效地支持大量细粒度的对象。主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销。在某种程度上,你可以把单例看成是享元的一种特例。
⑦装饰者(Decorator):动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更具有弹性的替代方案。保持接口,增强性能。
行为型(Behavior)模式(共11种)
①策略(Strategy)让用户可以选择执行一个动作的方法,也就是说,用户可以选择不同的策略来进行操作。个人觉得策略模式可以用这个公式:不同的XXX 拥有不同的XXX供用户选择。比如说:不同的象棋棋子拥有不同的走法供用户选择。
②观察者(Observer):在对象之间定义了一对多的依赖关系,这样一来,当一个对象改变状态时,依赖它的对象都会收到通知并自动跟新。Java已经提供了对观察者Observer模式的默认实现,Java对观察者模式的支持主要体现在Observable类和Observer接口。
③模板方法(Template method):在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以再不改变算法结构的情况下,重新定义算法中的某些步骤。简而言之:模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。
④迭代器(Iterator):提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
⑤责任链(ChainOfResponsibility): 有多个对象,每个对象持有下一个对象的引用,形成一条链,请求在这条链上传递,直到某一对象决定处理该请求,但是发出者并不清楚最终哪个对象会处理该请求。
⑥命令(Command):将“请求”(命令/口令)封装成一个对象,以便使用不同的请求、队列或者日志来参数化其对象。命令模式也支持撤销操作。
⑦备忘录(Memento): 主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象。
⑧状态(State):允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。状态模式说白了就是一个对像有不同的状态,不同的状态对应不同的行为,它其实是对switch case这样的语句的拓展。
⑨解释器(Interpreter):它定义了对象与对象之间进行某种操作之后会得到什么值。一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。
⑩中介者(Mediator):主要用来降低类与类之间的耦合的,因为如果类与类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。
⑪访问者(Visitor):把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定而算法又容易变化的系统。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者;而它的缺点就是增加新的数据结构很困难。
三、Java设计模式菜鸟系列目录
Java设计模式菜鸟系列(一)策略模式建模与实现
Java设计模式菜鸟系列(二)观察者模式建模与实现
Java设计模式菜鸟系列(三)装饰者模式建模与实现
Java设计模式菜鸟系列(四)工厂方法模式建模与实现
Java设计模式菜鸟系列(五)抽象工厂模式建模与实现
Java设计模式菜鸟系列(六)单例模式建模与实现
Java设计模式菜鸟系列(七)命令模式建模与实现
Java设计模式菜鸟系列(八)适配器模式建模与实现
Java设计模式菜鸟系列(九)外观模式建模与实现
Java设计模式菜鸟系列(十)模板方法模式建模与实现
Java设计模式菜鸟系列(十一)迭代器模式建模与实现
Java设计模式菜鸟系列(十二)组合模式建模与实现
Java设计模式菜鸟系列(十三)状态模式建模与实现
Java设计模式菜鸟系列(十四)代理模式建模与实现
Java设计模式菜鸟系列(十五)建造者模式建模与实现
Java设计模式菜鸟系列(十六)原型模式建模与实现
Java设计模式菜鸟系列(十七)桥接模式建模与实现
Java设计模式菜鸟系列(十八)责任链模式建模与实现
Java设计模式菜鸟系列(十九)备忘录模式建模与实现
Java设计模式菜鸟系列(二十)解释器模式建模与实现
Java设计模式菜鸟系列(二十一)享元模式建模与实现
Java设计模式菜鸟系列(二十二)中介者模式建模与实现
Java设计模式菜鸟系列(二十三)访问者模式建模与实现
Java设计模式菜鸟系列教程PDF下载地址:http://download.csdn.net/detail/jave_lover/8714347
相关推荐
Java设计模式菜鸟系列教程 本教程对Java 23种设计模式进行了总结,涵盖了策略模式、观察者模式、装饰者模式、工厂方法模式、抽象工厂模式、单例模式、命令模式、适配器模式、外观模式、模板方法模式、迭代器模式、...
【Java菜鸟教程】是针对初学者精心编写的教程,旨在帮助新手快速掌握Java编程语言的基础知识。本教程全面覆盖了Java的核心概念和技术,是学习Java编程的理想起点。 首先,Java是一种面向对象的编程语言,由Sun ...
在这个"菜鸟教程设计模式之工厂模式代码整理"中,我们将深入探讨工厂模式的基本概念、结构以及如何在实际编程中应用。 工厂模式的核心思想是通过一个专门的工厂类来创建对象,而不是让客户端代码直接实例化具体的...
Java编程语言是一种高级编程语言,由Sun Microsystems公司(现为...菜鸟教程中的Java教程是一个很好的学习资源,它从基础知识讲起,逐步深入,对于初学者而言,通过实例和实践来掌握Java编程是一条有效的学习路径。
JAVA菜鸟级入门教程
Java的设计初衷是实现一种可以在各种不同设备和平台上运行的编程语言。为了达到这个目标,Java被设计为具有良好的跨平台特性,即“一次编写,到处运行”。这种特性主要得益于Java的运行时环境(JRE)和其字节码...
### Java程序员成长之路——从菜鸟到笨鸟 #### 一、引言 《Java程序员由菜鸟到笨鸟》是一本由曹胜欢编写的书籍,旨在帮助初学者掌握Java编程的基础知识,并逐步进阶至更高级的应用场景。本书不仅适合初学者作为...
8. **JAVA设计模式.chm**:设计模式是软件工程中的重要概念,这本书详细介绍了23种经典设计模式,如单例模式、工厂模式、观察者模式等,对提升代码质量和可维护性有极大帮助。 9. **Oracle optimizer.chm**:可能...
设计模式(Design pattern)是一套被反复使用、...本章系Java之美[从菜鸟到高手演变]系列之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师!
"Java培训教程 菜鸟到高手"是一套旨在帮助初学者全面掌握Java编程技能的教程。这个教程的目标是通过系统性的学习,将新手逐步引领至高级开发者水平。 首先,Java基础知识是学习的起点。包括Java的历史、特性以及为...
Java是一种高级编程语言,特别适合初学者学习。它以其独特的特性和优势在IT行业中占据了重要的地位。本教程将深入探讨Java的基本概念和历史发展。 Java的主要特点体现在以下几个方面: 1. **面向对象**:Java是一...
简单例子说明了java的23种设计模式的原理,方便大家进行程序开发,对于入门级选手(我也是初学者)有很大的帮助
菜鸟教程网站上的Python3教程还挺详细,想在没有网络的电脑上离线看但是发现网上没有资源,只有老版本的PDF文档,实在不方便阅读,所以自己做了一个,Python3菜鸟教程离线版内部包含20200914保存的完整离线版教程...
本资源“设计模式学习经典篇之菜鸟篇”旨在为初学者提供一个全面而通俗易懂的设计模式学习路径。 设计模式的核心在于重用已验证的解决方案,以提高代码的可读性、可维护性和可扩展性。根据GOF(Gamma, Helm, ...
java常用的设计模式一个简单总结,如工厂模式、单例模式、代理模式等等。(楼主也是未入门的菜鸟,如有错误请及时联系楼主更正,谢谢!)
LINUX教程书籍,菜鸟入门宝典 LINUX教程书籍,菜鸟入门宝典 LINUX教程书籍,菜鸟入门宝典
Python是一种高级编程语言,以其简洁明了的语法和强大的功能而受到广泛的欢迎,尤其适合初学者入门。在Python中,基础语法是学习的关键,这里我们深入探讨一下。 1. **字符串**: - 在Python 2.7中,你可以使用单...
菜鸟教程官方的离线版本,教程包含了所有内容。包含Java C C++ C# 安卓开发。菜鸟教程官方的离线版本,教程包含了所有内容。包含Java C C++ C# 安卓开发。菜鸟教程官方的离线版本,教程包含了所有内容。包含Java C ...
本资源共4部分,全部下载后解压方可查看。 菜鸟教程 2016版.zip.001 菜鸟教程 2016版.zip.002 菜鸟教程 2016版.zip.003 菜鸟教程 2016版.zip.004