设计模式
文章平均质量分 85
can007
莫畏浮云遮望眼...
展开
-
设计模式之单例模式
1 概述 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:(1)某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。(2)省去了new操作符,降低了系统内存的使用频率,减轻GC压力。(3)有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多原创 2013-11-16 10:12:51 · 1074 阅读 · 0 评论 -
设计模式之模板模式
1 概述 模板模式(Template Patern),是在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法中使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板就是一个方法,这个方法将算法定义成一组步骤,为了不被子类改变,这个方法通常被限制为final类型。另外还有一个钩子(hook)的概念,所谓的“钩子”就是默认不做事的方法,这个方原创 2013-12-25 23:06:23 · 1061 阅读 · 0 评论 -
设计模式之策略模式
1 概述 策略模式(Strategy Patern),是把针对同一件事情的不同的算法分别封装起来,并且相互之间可以替换。这种模式的使用需要以下三种角色:(1)环境角色:应用不同的策略来达到完成某件事情的目的;(2)抽象策略角色:通常由接口或者抽象类实现,所有的具体角色都继承此抽象;(3)具体策略角色:具体的算法实现;2 示例 相对来说,例子还原创 2013-12-22 21:26:59 · 1105 阅读 · 0 评论 -
设计模式之组合模式
1 概述 组合模式(Composite),将对象组合成树形结构来表现“整体&部分”这一层次结构。这种模式能让客户以一致的方式处理个别对象以及对象组合。 组合内的所有对象都必须实现相同的接口,当组合结构复杂,遍历的成本太高时,就有必要实现组合节点的缓存。组合的优点是可以让客户端不再区分操作的是组合对象还是叶子对象,而是以一种统一的方式来操作。 组合模式的组成原创 2013-12-12 23:25:50 · 1086 阅读 · 0 评论 -
设计模式之桥接模式
1 概述 桥接模式(Bridge),是把抽象和具体的实现分离开,使得二者可以独立扩展,不会影响到对方。当需要不同的方式去改变接口和实现时,就能体现出桥接模式的功效。2 示例 直接这么说,显得有点不太好理解。Bridge就是桥,用于连接抽象和具体实现,过了桥,就该干嘛干嘛,两不相干。 依然以手机为例,手机浏览到好看的网页或者听到好听的歌曲、好看的视频等都原创 2013-12-10 22:06:27 · 871 阅读 · 0 评论 -
设计模式之外观模式
1 概述 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。这样可以避免客户端和子系统之间的紧耦合。 这种模式需要将一系列的子系统组合到外观中,然后将具体的工作交给各个子系统去完成。如此一来,可以简化接口的调用。 其本质就是将系统与客户端交互的地方封装起来。2 示例 这个模式,总体来说,很简单,理解起来也不困难。 依然以手机为例原创 2013-12-09 21:03:01 · 894 阅读 · 0 评论 -
设计模式之工厂模式
1 概述 关于设计模式的内容等在网上有很多,但是没有自己实际的搞一把,多少对这些个东西还是有点模糊,今儿个从工厂模式开始,学习学习这23个由大牛们总结出来的设计模式,若有理解不到位的地方,还请多多指正。 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 有人把工厂模式分为三类: 1)简单工厂模式(Simple原创 2013-11-14 21:32:04 · 1141 阅读 · 0 评论 -
设计模式之代理模式
1 概述 代理模式(Proxy)就是为一个对象创建一个替身,用来控制对当前对象的访问。目的就是为了在不直接操作对象的前提下对对象进行访问。 根据代理类和被代理类的关系来区分的话,可以分为静态代理和动态代理。(1)静态代理:在运行之前,就确定好代理类、被代理类之间的关系。(2)动态代理:在运行时动态的创建一个代理类,实现一个或多个接口,将方法的调用转发到指原创 2013-11-27 22:35:04 · 974 阅读 · 0 评论 -
设计模式之装饰者模式
1 概述 装饰模式(Decorator),就是可以动态的给对象增加新的功能,它要求装饰者对象和被装饰者对象有着相同的抽象父类或者接口。 当然,也可以写一个新的类来继承旧的类,在新的类中增加方法或者重写父类中的方法以此来达到扩展功能的目的,但是这样做的话,依然在编译的时候就定死了这个新的子类及其对象。想要动态的达到这一目的,就得使用这个模式了。 装饰者模式有以下几个要点原创 2013-11-23 12:39:50 · 905 阅读 · 0 评论 -
设计模式之适配器模式
1 概述 适配器模式(Adapter),说白了就是为了挂羊头卖狗肉而专门设计的模式。也就是把一个类的接口变换成客户端所期待的另一种接口。 适配器模式通过定义一个新的接口(对要实现的功能加以抽象),和一个实现该接口的Adapter(适配器)类来透明地调用外部组件。这样替换外部组件时,最多只要修改几个Adapter类就可以了,其他源代码都不会受到影响。 还是以手机为原创 2013-11-23 23:03:02 · 1001 阅读 · 0 评论 -
设计模式之原型模式
1 概述原型模式(Prototype model)被用在频繁调用且极其相似的对象上,在已指定对象的基础上,然后通过拷贝这些原型对象创建新的对象。 Prototype类需要具备以下两个条件:(1)实现Cloneable接口。在Java语言有一个Cloneable接口,它的目的是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。只有实现了这个接口的类才可原创 2013-11-21 22:14:20 · 956 阅读 · 0 评论 -
设计模式之建造者模式
1 概述 建造者模式(Builder Pattern)主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。因此, 建造者模式主要用来解决“对象部分”的需求变化。 这样可以对对象构造的过程进行更加精细的控制。2 示例 还是以生产手机为例,每个手机分为屏幕Screen、CPU、Battery。现在要生产两种手机,苹果原创 2013-11-20 22:26:01 · 1036 阅读 · 0 评论 -
设计模式之观察者模式
1 概述 观察者模式(Observer Patern),定义了对象间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。其目的就是为了对象间的解耦。 这个模式的角色有以下几种:(1)抽象主题(Subject)角色:它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有多个观察者,抽象主题提供一个接口,可以增加和删除观察者对象;原创 2013-12-27 00:02:46 · 2317 阅读 · 6 评论