java23种设计模式-组合器模式

定义 将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。–GoF《设计模式》 UML 角色 Component: 组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。 ...

2018-10-16 16:16:10

阅读数 258

评论数 1

java23种设计模式--享元模式

定义 享元模式以共享的方式高效地支持大量的细粒度对象。是结构型创建模式。 UML 角色 FlyWeight: 抽象享元接口 ConcreteFlyWeight: 具体享元类,实现了享元类。该类对象在创建时便初始化内蕴状态。 FlyWeightFactory: 享元对象创建与管理工厂类。当创...

2018-10-16 15:17:51

阅读数 162

评论数 0

java23种设计模式--桥接模式

定义 1.将抽象部分与实现部分分离,使它们都可以独立的变化。 2.将抽象和实现放在两个不同的类层次中,使它们可以独立地变化。——《Head First 设计模式》 UML 角色 抽象化角色: 抽象了类的基本功能。聚合一个实现化角色完成功能。 实现化角色接口: 一个类或者接口。定义实现化接...

2018-10-14 17:02:13

阅读数 32

评论数 0

java23种设计模式-代理模式

定义 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 UML 角色 Target: 被代理类的接口。 TargetImpl: 被代理类的实现。 TargetProxy: Target...

2018-10-07 20:29:17

阅读数 48

评论数 0

java23种设计模式-门面(外观)模式

定义 外观模式为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 UML 角色 子系统(SubSystem): 表示一个系统的子系统或者模块 门面(Facade): 客户端通过门面间接控制子系统。门面屏蔽了客户端无需知道的细节,简化了调用过...

2018-10-06 16:47:00

阅读数 82

评论数 0

java23种设计模式-装饰者模式

定义 装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 UML 角色 Component: 抽象组件接口 ConcreteComponent: 具体组件实现类 Decorator: 由abstract申明的...

2018-10-05 16:06:51

阅读数 39

评论数 0

java23种设计模式-适配器模式

定义 适配器模式是把一个类的接口转换成客户所期望的另一种接口,从而使原本不匹配而无法在一起工作的两个类可以一起工作。 UML 角色 Target: 符合客户端期望的接口。 Adaptee: 需要被适配的类。此类包含了客户端想要实现的大部分功能,但并不能完成客户端所想完成的所有任务,同时又不...

2018-10-02 12:32:35

阅读数 34

评论数 0

java23种设计模式-解释器模式

定义 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子 UML 角色 抽象表达式(Expression):声明一个所有的具体表达式角色都需要实现的抽象接口。该接口提供一个interpret()方法。 终结符表达式(Terminal Expres...

2018-09-30 19:04:08

阅读数 58

评论数 0

java23种设计模式-中介者模式

定义 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 角色 Colleague:是一个抽象类或者接口,提供和其他Colleague通讯的方法 notify(String name)。参数name是其他Collea...

2018-09-24 14:16:44

阅读数 42

评论数 0

java23种设计模式—命令模式

java23种设计模式—命令模式 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松...

2018-09-19 23:09:30

阅读数 26

评论数 0

java23种设计模式-访问者模式

定义 封装一些作用于某种数据结构中各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 UML 角色 Visitor : 抽象访问者接口 Element : 被访问元素接口 ElementA,ElementB : 具体元素,实现了Elemen...

2018-09-15 15:37:48

阅读数 37

评论数 0

java实现基于数组的栈和队列

栈和队列是非常基础但又十分重要十分常用的数据结构。栈的先入后出和队列的先入先入特性在软件工程中的应用非常广泛。以下为java版基于数组的简单实现。 /** * desc : 栈的数组实现 * Created by tiantian on 2018/9/1 */ public class...

2018-09-03 00:10:03

阅读数 273

评论数 0

java实现双向链表

链表可以抽象为若干相连起来的节点,其迭代只能顺着节点链依次访问。节点的组成简单的分为三个属性:节点的存储的值、前驱节点、后继节点。 简单的单向链表的实现中有个头节点(head),迭代都是从head元素开始。链表head节点的前驱节点和链表尾部元素的后继节点都为null。向链表添加元素时,新加入的...

2018-09-03 00:08:31

阅读数 256

评论数 1

java23种设计模式-状态模式

定义 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。状态模式是一种对象行为型模式。 角色 状态模式角色分类如下 抽象状态接口。定义状态的抽象行为。使用抽象类或者接口(interface)实现。 具体状态接口。实现了抽象状态。 环境类。聚合了一个状态引...

2018-09-01 18:26:16

阅读数 30

评论数 0

基于分治的选择算法

原理 分治思想的强大又一次体现出来了。这种选择算法可以筛选出大小为n的序列中第i(i <= n)大的元素。特别的,也可以求中位数。find方法实现原理如同快速排序的划分阶段,唯一的区别是该方法为了找到目标元素递归调用自身。p>=r为基本...

2018-08-28 23:20:59

阅读数 65

评论数 0

java23种设计模式-备忘录模式

定义 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。 角色 发起人 ...

2018-08-26 18:36:11

阅读数 33

评论数 0

java23种设计模式-责任链模式

定义 属于行为型模式的一种,一个请求由多个对象来处理,这些对象形成一条链,请求沿着该链传递,直到该链上的某个对象处理它为止。 角色 抽象处理者 定义了处理方法,并且可以设置和返回下一个处理者。为接口或抽象类 具体处理者 抽象处理者的实现 实现 /** * des...

2018-08-19 16:25:06

阅读数 41

评论数 0

计数排序

实现思路 计数排序的思想是这样的:使用a,b,c三个数组,a存储要排序的数,c作为临时存储用,b存储最后的排序结果。很显然,这种排序方式不同于基于比较的排序算法,也非原址的。笔者的实现使用了四个for循环,虽然循环次数较多,但总的来说算法时间复杂度是O(N),相比基于比较的排序算法时间复杂度的下...

2018-08-12 22:30:53

阅读数 30

评论数 0

java23种设计模式-命令模式

在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command...

2018-08-12 22:29:34

阅读数 35

评论数 0

java23种设计模式-迭代器模式

定义 提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。 角色 抽象迭代器 定义了迭代器内部该有的方法 具体迭代器 抽象迭代器的实现,has a 具体可迭代对象 抽象容器 提供创建迭代器的方法以及一组集合对象的操作方法 具体容器 实现了抽象容器 ...

2018-08-12 22:28:11

阅读数 42

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭