`
jiaguwen123
  • 浏览: 413537 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

设计模式<二>

阅读更多
关键字: 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)
备忘录对象用来存储另一个对象的快照对象,保存其内部状态,使得可以随时恢复。
备忘录角色:保存发起人对象的内部状态,保护内容不被除发起人对象之外的对象获取。窄接口:负责人对象和其他对象看到的接口,只允许把备忘录对象传给其他对象。宽接口:发起人能看到的接口,允许读取内部状态。
发起人角色:创建并使用备忘录对象来保存其状态
负责人角色:负责保存备忘录对象。
白箱实现:备忘录类对其他类也可见,这样发起人的状态可能会存在安全问题。
黑箱实现:把备忘录类作成发起人的内部类,对外提供一个标识接口。
分享到:
评论

相关推荐

    设计模式之Facade

    eclipse工程文件 包含代码 有助理解&lt;br&gt;门面(Facade)模式&lt;br&gt;&lt;br&gt;... 二、 门面模式的结构&lt;br&gt;&lt;br&gt;&lt;br&gt;门面模式是对象的结构模式。门面模式没有一个一般化的类图描述,下图演示了一个门面模式的示意性对象图:&lt;br&gt;

    C#编程经验技巧宝典

    58&lt;br&gt;&lt;br&gt;0081 文本中首字母改为大写 59&lt;br&gt;&lt;br&gt;0082 C#随机数的产生 59&lt;br&gt;&lt;br&gt;0083 身份证从15位升至18位算法 60&lt;br&gt;&lt;br&gt;0084 十进制数转二进制数的算法 60&lt;br&gt;&lt;br&gt;0085 十进制数转八进制数的算法 61...

    win2000驱动程序设计指南

    数据传输 64&lt;br&gt;4.1 中断处理 64&lt;br&gt;4.2 DPC处理程序 66&lt;br&gt;4.3 带外(OOB)数据包 66&lt;br&gt;4.3.1 等待发送的OOB数据 67&lt;br&gt;4.3.2 接收的OOB数据 68&lt;br&gt;4.4 发送包 69&lt;br&gt;4.4.1 无连接微端口的多包传送 70&lt;br&gt;4.4.1.1 ...

    java应用软件程序设计

    ReadTestquestion&lt;br&gt;7.5. 课程设计作业&lt;br&gt;第8章 日历记事本&lt;br&gt;8.1. 设计内容&lt;br&gt;8.2. 设计要求&lt;br&gt;8.3. 总体设计&lt;br&gt;8.4. 具体设计&lt;br&gt;8.4.1. 运行效果与程序发布&lt;br&gt;8.4.2. 主类CalendarPad&lt;br&gt;8.4.3. 记事本...

    mysql5.1中文手册

    在ANSI模式下运行MySQL&lt;br&gt;1.8.4. MySQL对标准SQL的扩展&lt;br&gt;1.8.5. MySQL与标准SQL的差别&lt;br&gt;1.8.6. MySQL处理约束的方式&lt;br&gt;2. 安装MySQL&lt;br&gt;2.1. 一般安装问题&lt;br&gt;2.1.1. MySQL支持的操作系统&lt;br&gt;2.1.2. 选择要...

    Linux环境数据库管理员指南

    在Linux上安装MySQL 198&lt;br&gt;7.1 引言 198&lt;br&gt;7.2 安装 199&lt;br&gt;7.2.1 命名约定 199&lt;br&gt;7.2.2 二进制分发包的安装 201&lt;br&gt;7.2.3 RPM 分发包的安装 202&lt;br&gt;7.2.4 源代码分发包的安装 202&lt;br&gt;7.3 配置 204&lt;br&gt;7.3.1 安全...

    JAVA与模式

    &lt;br&gt;&lt;br&gt;第一部份、UML和模式介绍 &lt;br&gt; &lt;br&gt;com.javapatterns.uml 统一建模语言UML介绍 &lt;br&gt; &lt;br&gt;&lt;br&gt;第二部份、面向对象的设计原则 &lt;br&gt; &lt;br&gt;com.javapatterns.openclose “开-闭”原则 &lt;br&gt;...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part4

    227&lt;br&gt;7.22 ASP 228&lt;br&gt;7.22.1 ASP的概念 228&lt;br&gt;7.22.2 ASP模式的优点 229&lt;br&gt;7.22.3 ASP的应用步骤 229&lt;br&gt;7.22.4 ASP的发展趋势和存在的问题 230&lt;br&gt;7.23 数据中心 230&lt;br&gt;7.23.1 数据中心的概念 230&lt;br&gt;7.23.2 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇

    227&lt;br&gt;7.22 ASP 228&lt;br&gt;7.22.1 ASP的概念 228&lt;br&gt;7.22.2 ASP模式的优点 229&lt;br&gt;7.22.3 ASP的应用步骤 229&lt;br&gt;7.22.4 ASP的发展趋势和存在的问题 230&lt;br&gt;7.23 数据中心 230&lt;br&gt;7.23.1 数据中心的概念 230&lt;br&gt;7.23.2 ...

    TCP-IP技术大全

    TCP/IP和Internet 8&lt;br&gt;2.1 一段历史 8&lt;br&gt;2.1.1 ARPANET 8&lt;br&gt;2.1.2 TCP/IP 9&lt;br&gt;2.1.3 国家科学基金会(NSF) 9&lt;br&gt;2.1.4 当今的Internet 12&lt;br&gt;2.2 RFC和标准化过程 12&lt;br&gt;2.2.1 获得RFC 13&lt;br&gt;2.2.2 RFC索引 13&lt;br...

    ASP与SQL网页数据库程序设计

    ..17&lt;br&gt;2-1 编辑软件的需求 18&lt;br&gt;2-1-1 记事本 18&lt;br&gt;2-1-2 FrontPage 编辑器与MSE编辑器 19&lt;br&gt;2-2 MSE的操作 23&lt;br&gt;2-2-1 MSE的各部分 23&lt;br&gt;2-2-2 建立基本的设计窗体 24&lt;br&gt;2-3 加入控制标记 28&lt;br&gt;2-3-1...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part5

    227&lt;br&gt;7.22 ASP 228&lt;br&gt;7.22.1 ASP的概念 228&lt;br&gt;7.22.2 ASP模式的优点 229&lt;br&gt;7.22.3 ASP的应用步骤 229&lt;br&gt;7.22.4 ASP的发展趋势和存在的问题 230&lt;br&gt;7.23 数据中心 230&lt;br&gt;7.23.1 数据中心的概念 230&lt;br&gt;7.23.2 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part2

    227&lt;br&gt;7.22 ASP 228&lt;br&gt;7.22.1 ASP的概念 228&lt;br&gt;7.22.2 ASP模式的优点 229&lt;br&gt;7.22.3 ASP的应用步骤 229&lt;br&gt;7.22.4 ASP的发展趋势和存在的问题 230&lt;br&gt;7.23 数据中心 230&lt;br&gt;7.23.1 数据中心的概念 230&lt;br&gt;7.23.2 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part6

    227&lt;br&gt;7.22 ASP 228&lt;br&gt;7.22.1 ASP的概念 228&lt;br&gt;7.22.2 ASP模式的优点 229&lt;br&gt;7.22.3 ASP的应用步骤 229&lt;br&gt;7.22.4 ASP的发展趋势和存在的问题 230&lt;br&gt;7.23 数据中心 230&lt;br&gt;7.23.1 数据中心的概念 230&lt;br&gt;7.23.2 ...

    Java数据编程指南

    数据建模&lt;br&gt;数据建模的阶段&lt;br&gt;可以考虑的一些数据建模工具&lt;br&gt;小结&lt;br&gt;第二部分 数据库访问&lt;br&gt;第5章 数据库的概念与技术&lt;br&gt;数据库设计 &lt;br&gt;数据库规格化与数据仓库&lt;br&gt;数据库视图&lt;br&gt;数据库元数据&lt;br&gt;临时表&lt;br&gt;...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part3

    227&lt;br&gt;7.22 ASP 228&lt;br&gt;7.22.1 ASP的概念 228&lt;br&gt;7.22.2 ASP模式的优点 229&lt;br&gt;7.22.3 ASP的应用步骤 229&lt;br&gt;7.22.4 ASP的发展趋势和存在的问题 230&lt;br&gt;7.23 数据中心 230&lt;br&gt;7.23.1 数据中心的概念 230&lt;br&gt;7.23.2 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part7

    227&lt;br&gt;7.22 ASP 228&lt;br&gt;7.22.1 ASP的概念 228&lt;br&gt;7.22.2 ASP模式的优点 229&lt;br&gt;7.22.3 ASP的应用步骤 229&lt;br&gt;7.22.4 ASP的发展趋势和存在的问题 230&lt;br&gt;7.23 数据中心 230&lt;br&gt;7.23.1 数据中心的概念 230&lt;br&gt;7.23.2 ...

    C源代码实例集

    &lt;br&gt;001 第一个C程序 &lt;br&gt;002 运行多个源文件 &lt;br&gt;003 求整数之积 &lt;br&gt;...&lt;br&gt;013 用二维数组实现矩阵转置 &lt;br&gt;014 求解二维数组的最大/最小元素 &lt;br&gt;015 利用数组求前n个质数 &lt;br&gt;016 编制万年历 &lt;br&gt;017 对数组元素...

    数据结构(C++)有关练习题

    &lt;br&gt;&lt;br&gt;&lt;br&gt;实验六 二叉树(二)&lt;br&gt;实验目的:&lt;br&gt;通过实验掌握下列知识: &lt;br&gt;1、继续熟悉二叉树的存储结构和遍历算法;&lt;br&gt;2、熟悉二叉搜索树的应用,并做一个小型的课程设计;&lt;br&gt;内容及步骤:&lt;br&gt;1、 在前一个实验...

    MATLAB 7_0实用指南 (上册)

    )设计&lt;br&gt;5.1GUIDE简介&lt;br&gt;5.1.1启动GUIDE””&lt;br&gt;5.1.2输出编辑器&lt;br&gt;5.1.3GUIDE模板&lt;br&gt;5.1.4运行GUI&lt;br&gt;5.1.5GUIFIG文件和M文件&lt;br&gt;5.2创建GUI&lt;br&gt;5.2.1设计GUI&lt;br&gt;5.2.2完成GUI&lt;br&gt;5.2.3设置GUI组件的属性&lt;br&gt;...

Global site tag (gtag.js) - Google Analytics