`
shawnwong
  • 浏览: 8214 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

JAVA设计模式总结,望学习模式者可以所有帮助。

阅读更多
创建模式
1.工厂方法模式(Factory Method)
多态性工厂模式,创建一个产品的工厂接口,把实际的工作转移到具体的子类。
2.抽象工厂模式(Abstract Factory)
针对多个产品等级的情况,而工厂方法模式针对单一产品等级的情况。
3.单例模式(Singleton)
系统中只有一个实例,因此构造方法应该为私有
饿汉式:类加载时直接创建静态实例
懒汉式:第一次需要时才创建一个实例,那么newInstance方法要加同步
饿汉式比懒汉式要好,尽管资源利用率要差。但是不用同步。
4.建造模式(Builder)
将一个对象的内部表象和建造过程分割,一个建造过程可以造出不同表象的对象。可简化为模版方法模式.
5.原型模式(ProtoType)
通过一个原型对象来创建一个新对象(克隆)。Java中要给出Clonable接口的实现,具体类要实现这个接口,并给出clone()方法的实现细节,
这就是简单原型模式的应用。
浅拷贝:只拷贝简单属性的值和对象属性的地址
深拷贝:拷贝本对象引用的对象,有可能会出现循环引用的情况。可以用串行化解决深拷贝。写到流里再读出来,这时会是一个对象
的深拷贝结果。
结构模式
如何把简单的类根据某种结构组装为大的系统
6.适配器模式(Adapter)
用一个适配器类把一个接口转成另一个接口。
7.组合模式(Composite)
把整体和局部的关系用树状结构描述出来,使得客户端把整体对象和局部对象同等看待。
8.装饰模式(Decorator)
以对客户透明的方式来扩展对象的功能。
用户根据功能需求随意选取组成对象的成分,通过方法的链式调用来实现。
可以给对象动态的增加功能,比继承灵活性更大。
9.代理模式(Proxy)
用一个代理对象来作为另一个对象的代理,对客户来说是透明的。
存在一个抽象主题类,具体主题类和代理主题类都继承(实现)抽象主题,代理主题类中的方法会调用具体主题类中相对应的方法。
10.享元模式(Flyweight Pattern)
对象的状态分为内蕴状态和外蕴状态。内蕴状态不随环境变化而变化,因此可以作成系统共享.
11.门面模式(Facade)
访问子系统的时候,通过一个Façade对象访问。Facade类是单例的。
客户代码只需要和门面对象通信,不需要和具体子系统内部的对象通信,使得他们之间的耦合关系减弱。
12.桥梁模式(Bridge)
将抽象和实现脱耦,使得二者可以单独变化。使得一个继承关系不承担两个变化因素.使用合成来代替继承的一种体现.
行为模式
描述如何在对象之间划分责任
13.策略模式(Strategy)
如同LayoutManager和具体的布局管理器的关系,在抽象策略类中定义方法,在具体策略子类中实现。客户代码根据不同的需要选择相应的具体类,例如电子商务中多种价格算法。
一种策略一旦选中,整个系统运行期是不变化的
14.模板方法(Template Method)
准备一个抽象类,把部分确定的逻辑定义在某些方法中,用其他抽象方法实现剩余的逻辑。不同子类对这些逻辑有不同的实现。
用法:定义多个抽象操作,定义并实现一个模板方法,将步骤放在这个具体方法里,推迟到子类实现。子类可以改变父类的可变部分,但不能改变模板方法所代表的顶级逻辑。
15.观察者模式(Observer)
多个观察者同时监听某一主题对象,这个主题对象状态发生变化时,会通知所有观察者对象,使他们自动更新自己。在低耦合的对象间完成协调。
Java中的事件模型就是一个应用。
16.迭代器模式(Iterator)
类似于集合中的Iterator,使用迭代器来统一不同集合对象的遍历方式,隐藏内部细节,用一个抽象迭代器,每个具体的集合类来实现特有的迭代器。
17.责任链(Chain of Responsibility)
多个处理器对象连成一串,请求在这条链上传递,由该处理这个请求的处理器来处理。发出请求的客户端并不知道哪个对象处理请求。
18.状态模式(State)
在对象内部状态改变时改变其行为。把所研究的对象的行为封装在不同的状态对象中。
19.备忘录模式(Memento)
备忘录对象用来存储另一个对象的快照对象,保存其内部状态,使得可以随时恢复。
备忘录角色:保存发起人对象的内部状态,保护内容不被除发起人对象之外的对象获取。窄接口:负责人对象和其他对象看到的接口,只允许把备忘录对象传给其他对象。宽接口:发起人能看到的接口,允许读取内部状态。
发起人角色:创建并使用备忘录对象来保存其状态
负责人角色:负责保存备忘录对象。
白箱实现:备忘录类对其他类也可见,这样发起人的状态可能会存在安全问题。
黑箱实现:把备忘录类作成发起人的内部类,对外提供一个标识接口。
分享到:
评论

相关推荐

    基于学习通的_Java程序设计_混合式教学改革研究(毕设&课设论文参考).pdf

    ### 基于学习通的Java程序设计...通过以上内容,我们可以看到,基于学习通的“Java程序设计”混合式教学改革不仅能够有效提高学生的学习效率和兴趣,还能促进教师与学生之间的互动与合作,是一种值得推广的教学模式。

    BOPPPS模型在Java程序设计课程中的应用.pdf

    在Java程序设计课程中,可以通过一个具体的程序功能或问题,引出学习的主题,让学生理解编程可以解决现实问题,从而激发学生的求知欲望。 “目标”阶段明确告诉学生本节课的具体学习目标。在Java课程中,这可能包括...

    Java 深度历险 深入学习的好书呀

    其次,在市面上关于Java的书籍中,除了入门书籍外,许多重要的书籍都与设计模式(Design Patterns)有关,如《J2EE Design Patterns》和《EJB Design Patterns》等。这些都表明了Sun在Java领域内对架构设计的关注。 ...

    java面试传家宝(大小公司几乎必考)

    Java面试传家宝是众多求职者在准备...总的来说,Java面试传家宝涵盖了从基础到高级的Java技术体系,通过对这份资料的学习和实践,可以有效地提升面试者在Java面试中的竞争力,帮助他们顺利通过笔试,迎接更多面试挑战。

    java毕业实习报告模板3篇(完整版).docx

    在实习项目的选择标准上,应着重考虑项目是否能够帮助实习生系统地学习和实践Java相关技术,并且要求项目具有一定的难度和挑战性,能够激发实习生的学习兴趣和解决问题的欲望。例如,通过参与到企业级应用的开发中,...

    最新新浪微博爬虫程序Java版 2015

    在网络爬虫的设计中,首先需要理解目标网站的结构,尤其是网页的URL模式和数据存储方式。对于微博来说,用户数据、时间线、评论等信息通常嵌入在HTML或JavaScript中。Jsoup能帮助我们解析这些页面,提取出所需信息,...

    Java面试考核目标.docx

    - 高级:能够独立完成复杂功能模块的设计与实现,了解设计模式。 - 资深/专家:能够对现有代码进行优化,具有重构能力,熟悉多线程编程等高级特性。 2. **数据库、缓存、事务等** - **考核点**:熟悉关系型...

    演习EmJavaGeneration

    EmJavaGeneration是一个针对Java编程的学习资源,通过一系列的练习题帮助开发者提高Java编程技能。这个压缩包中的"ExerciciosEmJavaGeneration-master"可能是一个包含多个Java练习项目的仓库或者源代码集合,旨在让...

    基于JavaWeb的学生云博客的设计与实现.docx

    ### 基于JavaWeb的学生云博客的设计与实现 #### 一、项目背景与意义 在互联网技术迅速发展的今天,博客作为一种重要的信息分享平台,在学习交流和个人品牌建设方面发挥着越来越重要的作用。对于广大学生群体而言,...

    深入浅出学Spring_Web_MVC

    **Spring Web MVC** 是一种轻量级的、基于MVC(Model-View-Controller)设计模式的Web应用框架,是Spring框架的重要组成部分之一。它为开发者提供了构建可维护性高、易于扩展的Web应用程序的强大工具。 ##### ...

    Struts原理、开发及项目实施

    <br/>5、Struts工作原理 MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。MVC的工作原理,如下图1所示: <br/> ...

    Chinese-Word-Segmentation:一个中文分词系统

    这些方法各有优势,精确匹配适用于已知词汇,而统计模型则能通过学习大量文本数据,自动识别潜在的词语模式。系统可能还支持自定义词典,以适应特定领域的分词需求,例如医学、法律等专业领域的术语。 在实际应用中...

    Volunteer database-开源

    总结,"Volunteer Database-开源"是一个专为非营利组织设计的开源志愿者管理系统,它利用开源软件的力量,提供了一个灵活、可定制的平台来管理和协调志愿者工作、合作伙伴关系和捐赠。项目中的Apache Tomcat服务器...

Global site tag (gtag.js) - Google Analytics