
Java设计模式
文章平均质量分 78
seven-soft
十几年工作经验,软件破解、软件反编译、网络抓包;精通c、c++、java语言,熟悉eclipse、Microsoft Visual Studio、XCODE 开发环境,精通wince和Android开发。精通嵌入式CPU软件开发。
展开
-
Java单态模式(Singleton模式)
定义:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。还有,singleton能够被状态化;这样,多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如,你要论坛中的帖子计数器,每次浏览一次需要计数,单态类能否保持住这个计数,并且能synchronize的安全自动加1,如原创 2016-05-29 07:59:27 · 277 阅读 · 0 评论 -
Java模板模式(Template模式)
Template模式定义:定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中。其实Java的抽象类本来就是Template模式,因此使用很普遍。而且很容易理解和使用,我们直接以示例开始:public abstract class Benchmark{ /** * 下面操作是我们希望在子类中完成 */ public abstract void bench原创 2016-05-30 06:48:52 · 591 阅读 · 0 评论 -
Java责任链模式(Chain of Responsibility模式)
Chain of Responsibility定义:Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合,唯一共同点是在他们之间传递request。也就是说,来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去。如何使原创 2016-05-30 06:49:55 · 316 阅读 · 0 评论 -
Java备忘录模式(Memento模式)
Memento定义:memento是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到原先保存的状态。Memento模式相对也比较好理解,我们看下列代码:public class Originator { private int number; private File file = null; public Originator(){}原创 2016-05-30 06:50:37 · 351 阅读 · 0 评论 -
Java中介模式(Mediator模式)
Mediator定义:用一个中介对象来封装一系列关于对象交互行为。为何使用Mediator模式/中介模式各个对象之间的交互操作非常多,每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉及到修改很多其他对象的行为,如果使用Mediator模式,可以使各个对象间的耦合松散,只需关心和 Mediator的关系,使多对多的关系变成了一对多的关系,可以降低系统的复杂性,提高可修改扩展原创 2016-05-30 06:51:22 · 373 阅读 · 0 评论 -
Java解释器模式(Interpreter模式)
Interpreter定义:定义语言的文法,并且建立一个解释器来解释该语言中的句子。Interpreter似乎使用面不是很广,它描述了一个语言解释器是如何构成的,在实际应用中,我们可能很少去构造一个语言的文法。我们还是来简单的了解一下。首先要建立一个接口,用来描述共同的操作。 public interface AbstractExpression { void i原创 2016-05-30 06:52:06 · 323 阅读 · 0 评论 -
Java策略模式(Strategy模式)
Strategy是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类。Stratrgy应用比较广泛,比如,公司经营业务变化图,可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现。这里以字符串替代为例,有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出。关于替代其中变量的方法可能有多种方法原创 2016-05-30 06:52:56 · 362 阅读 · 0 评论 -
Java状态模式(State模式)
State的定义:不同的状态,不同的行为;或者说,每个状态有着相应的行为。何时使用状态模式State模式在实际使用中比较多,适合"状态的切换"。因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了。不只是根据状态,也有根据属性。如果某个对象的属性不同,对象的行为就不一样,这点在数据库系统中原创 2016-05-30 06:53:51 · 1008 阅读 · 0 评论 -
Java观察者模式(Observer模式)
Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解。设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Observer(观察者)模式是比较常用的一个模式,尤其在界面设计中应用广泛,而本教程所关注的是Java在电子商务系统中应用,因此想从电子商务实例中原创 2016-05-30 06:54:36 · 443 阅读 · 0 评论 -
Java访问模式(Visitor者模式)
Visitor定义:作用于某个对象群中各个对象的操作。它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作。在Java中,Visitor模式实际上是分离了collection结构中的元素和对这些元素进行操作的行为。为何使用Visitor模式Java的Collection(包括Vector和Hashtable)是我们最经常使用的技术,可是Collection好象是个原创 2016-05-30 06:55:28 · 360 阅读 · 0 评论 -
Java迭代模式(Iterator模式)
上了这么多年学,我发现一个问题,好象老师都很喜欢点名,甚至点名都成了某些老师的嗜好,一日不点名,就饭吃不香,觉睡不好似的,我就觉得很奇怪,你的课要是讲的好,同学又怎么会不来听课呢,殊不知:“误人子弟,乃是犯罪!”啊。好了,那么我们现在来看老师这个点名过程是如何实现吧:1、老规矩,我们先定义老师(Teacher)接口类:public interface Teacher {原创 2016-05-30 06:41:26 · 292 阅读 · 0 评论 -
Java外观模式(Facade模式)
外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面。Facade一个典型应用就是数据库JDBC的应用,如下例对数据库的操作:public class DBCompare { Connection conn = null; PreparedStatement prep = null; ResultSet rset = null; try {原创 2016-05-30 06:40:12 · 299 阅读 · 0 评论 -
Java工厂模式(Factory模式)
工厂模式定义:提供创建对象的接口。为何使用工厂模式工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实原创 2016-05-29 07:57:50 · 278 阅读 · 0 评论 -
Java建造者模式(Builder模式)
Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们。用户不知道内部的具体构建细节。Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到。为何使用建造者模式是为了将构建复杂对象的过程和它的部件解耦。原创 2016-05-29 08:01:13 · 314 阅读 · 0 评论 -
Java原型模式(Prototype模式)
Prototype模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。如何使用原型模式因为Java中的提供clone()方法来实现对象的克隆,所以P原创 2016-05-29 08:02:29 · 260 阅读 · 0 评论 -
Java共享模式/享元模式(Flyweight模式)
Flyweight定义:避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)。为什么使用共享模式/享元模式面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得很庞大,比如,字处理软件,如果以每个文字都作为一个对象,几千个字,对象数就是几千,无疑耗费内存,那么我们还是要"求同存异",找出这些对象群的共同点,设计一个元类,封装可以被共享的类,另外原创 2016-05-29 08:03:16 · 498 阅读 · 0 评论 -
Java桥模式(Bridge模式)
Bridge定义:将抽象和行为划分开来,各自独立,但能动态的结合。为什么使用桥模式通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以下两种:这多个具体实现之间恰好是并列的,如前面举例,打桩,有两个concrete class:方形桩和圆形桩;这两个形状上的桩是并列的,没有概念上的重复,那么我们只要使用继承就可以了。原创 2016-05-29 08:04:21 · 336 阅读 · 0 评论 -
Java装饰模式(Decorator模式)
Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee。这两种实体在Decorator模式中是必须的。Decorator定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆。使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。为什么使用Decorator原创 2016-05-29 08:05:12 · 267 阅读 · 0 评论 -
Java组合模式(Composite模式)
Composite定义:将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。Composite比较容易理解,想到Composite就应该想到树形结构图。组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行。可以用牵一动百来形原创 2016-05-29 08:06:23 · 237 阅读 · 0 评论 -
Java适配器模式(Adapter模式)
适配器模式定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份。为何使用适配器模式我们经常碰到要将两个没有关系的类组合在一起使用,第一解决方案是:修改各自类的接口,但是如果我们没有源代码,或者,我们不愿意为了一个应用而修改各自的接口。 怎么办?使用Adapter,在这两种接口之间创建一个混合接口(混血儿)。原创 2016-05-29 08:07:16 · 284 阅读 · 0 评论 -
Java代理模式(Proxy模式)
理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣。Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,Proxy是代理的意思,我们也许有代理服务器等概念,代理概念可以解释为:在出发点到目的地之间有一道中间层,意为代理。设计模式中定义:为其他对象提供一种代理以控制对这个对象的访问。为原创 2016-05-30 06:39:11 · 418 阅读 · 0 评论 -
Java命令模式(Command模式)
Command模式是最让我疑惑的一个模式,我在阅读了很多代码后,才感觉隐约掌握其大概原理,我认为理解设计模式最主要是掌握起原理构造,这样才对自己实际编程有指导作用。Command模式实际上不是个很具体,规定很多的模式,正是这个灵活性,让人有些confuse。Command定义不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行原创 2016-05-30 06:56:10 · 352 阅读 · 0 评论