设计模式
GoGoCoder专属号
生活需要丰富,知识需要慢慢积累
展开
-
设计模式-单例模式(一)
单例模式(一)特别声明:由于本人也为初学者,如果一下讲解的有问题,望大家可以批评指正,欢迎一起来讨论。定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,它提供全局访问的方法。由定义可以看出,单例模式必须要满足如下几点:(1)系统中一个类只能有一个实例;(2)自行实例化;(3)提供全局访问的方法。既然单例模式符合上边三种规则,那在实现这三种规则时原创 2016-08-10 23:24:27 · 380 阅读 · 0 评论 -
单例模式(二)
单例模式(二)上一篇最后遗留的问题,我想大家应该都可以想明白,如果多线程访问的时候,必然不能保证单个实例,原因很简单,假如有100个线程同时在类没有创建对象的时候通过了if条件语句的判断,那么这100个线程就会执行100次new对象,及创建了100个对象,这不仅违反了单例原则,而且在使用程序时,也会出现相应问题。那如何解决这个问题呢?解决问题的方法只能从问题的本身下手。我们知道,java中原创 2016-08-11 10:19:00 · 276 阅读 · 0 评论 -
单例模式(三)
单例模式(三)前一篇我们通过饿汉式单例类解决了简单单例模式在多线程访问的情况下,不能保证单例的问题,可是,由以上分析,饿汉式单例类由于在类加载时便创建对象,又带来了不少问题。那我们怎么对饿汉式进行优化呢?这只能从问题的根节点出发,那就是不在类加载时便创建对象,而是在用的时候再创建。用的时候再创建?这跟我们最典型的单例模式有什么区别呢?对,就是在它的基础上优化。最简单的单例模式出现的问题原创 2016-08-12 09:38:17 · 245 阅读 · 0 评论 -
单例模式(四)
单例模式(四)由前三篇的分析,我们该怎么实现既能达到饿汉式中不用繁琐的线程控制进而影响系统性能的方式实现单例模式,又能达到懒汉式的延迟加载的效果呢?实现该效果要用到被称为IoDH的技术。不多说,直接上代码:public class IoDHSingle { private IoDHSingle() { // TODO Auto-generated constructor st原创 2016-08-12 10:56:16 · 306 阅读 · 0 评论 -
单例模式(五)
单例模式(五)经过前四篇对于单例模式的讲解,我想大家会问,单例模式的优缺点是啥呢?在声明情况下使用呢?单例模式优点:1)系统中只存在一个对象,这无疑可以节约一部分系统资源,而且对于一些需要频繁创建与销毁的对象,单例模式可以大大提高其性能;2)由于只有一个对象,单例类可以严格地控制客户端对它的访问;单例模式的缺点:1)单例模式是通过一个类来实现相应功能的,没有抽象层,所以可扩原创 2016-08-13 11:08:07 · 217 阅读 · 0 评论 -
迭代器模式
迭代器模式定义迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。迭代器模式的角色构成(1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法:取得下一个元素的方法next(),判断是否遍历结束的方法hasNext()),移出当前对象的方法remove(),(2)具体迭代器角色(C转载 2016-11-23 19:23:04 · 285 阅读 · 0 评论 -
JAVA设计模式之门面模式(外观模式)
医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。 首先病人必须先挂号,然后门诊。如果医生要求化验,病人必转载 2016-12-23 16:42:35 · 236 阅读 · 0 评论 -
23种设计模式
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两转载 2017-09-24 22:13:09 · 222 阅读 · 0 评论