设计模式
huwei1991
这个作者很懒,什么都没留下…
展开
-
java设计模式----factory
工厂模式一共分为三种,分别是:简单工厂模式,工厂方法模式和抽象工厂模式。 先来说说简单工厂模式,简单工厂模式一般不在实际中是用,因为它的扩展性不好,这里的扩展性,是指我们可以添加新的类,而不是去更改现有的类,这样做的好处显而易见,如果为了一个新需求去更改原有类的代码,那么就有可能引入新的bug,如果是新加一个类,这就可以非常有效地降低引入新bug的风险,因此,扩展性是非常重要的。下转载 2013-05-18 10:30:30 · 493 阅读 · 0 评论 -
JAVA设计模式-Composite
我想来CSDN的各位都是计算机方面的专家了,肯定会非常熟悉数据结构,JAVA的这个模式实际就是构造一个树,构造了这棵树之后,它就能做树能做的所有事情了。在这个模式里面,所有的元素都继承一个基类(或者实现一个接口),这个基类或者接口就是树的一个节点,这个节点的成员变量保存了它自己的数据以及它的子节点的引用,这个节点的方法包含添加和删除等树的基本操作。 package compo转载 2013-05-18 11:07:03 · 445 阅读 · 0 评论 -
JAVA设计模式-FlyWeight
个人认为,FlyWeight模式在两种情况下适用,一是只读对象,二是共享对象。 一. 只读对象。例如,一篇英文的文档是由26个英文字母构成的,每个字母就是一个只读的对象,多篇文档可以使用同样的26个字母对象来组成,没必要每篇文档都生成自己的字母对象,这样做的目的就是为了节省内存。 二. 共享对象。例如,打印机对象,那么就必须是用FlyWeight模式了,因为所有计算转载 2013-05-18 11:10:28 · 553 阅读 · 0 评论 -
JAVA设计模式-Iterator
Iterator模式JAVA已经在JDK里面帮助我们实现了,使用起来也很容易,看个例子就行了。 [java] view plaincopyprint?package iterator; import java.util.*; public class Test { static LinkedList list = new Linke转载 2013-05-18 11:16:38 · 461 阅读 · 0 评论 -
JAVA设计模式-Template
Template这个模式就是说规定好了做一件事情的框架,但是每一步具体怎么做是空出来的。它在下面三种情况下适用: 1) 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。这里父类就是一个模板,它规定了哪些方法是可变的,然后子类继承于它,然后填写自己的实现。 2) 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。其实这可以说是一种好的编码转载 2013-05-18 11:17:48 · 496 阅读 · 0 评论 -
JAVA设计模式-Strategy
策略模式让用户可以选择执行一个动作的方法,也就是说,用户可以选择不同的策略来进行操作。例如排序,用户可以选择较大的放前面,也可以选择较小的放前面,或者是按照自定义的顺序来放,这个自定义的顺序必须按照一定的策略得到,用户必须自己实现这样的策略。 还是来看一个例子吧,这个例子是对一个字符串数组进行排序的,按照字符串长度的不同来进行排序。 [java]转载 2013-05-18 11:18:51 · 527 阅读 · 0 评论 -
JAVA设计模式-Chain of Responsibility
职责链模式顾名思义是一个链条,在这个链条上的所有节点都可以处理请求,但是在某一种情况下,哪一个节点来处理这个请求是运行时决定的,但是客户端不需要知道具体是谁来处理,他只需要将请求交给一个节点就行了,当这个节点可以处理时,它就处理并返回给客户端,当它不能处理时,将这个请求传给职责链上的下一个节点,依次下去,直到请求被处理或者达到链条的最后一个节点。 例如,当我向我的上级经理要提出请半转载 2013-05-18 11:20:01 · 531 阅读 · 0 评论 -
JAVA设计模式-State
一个对像有不同的状态,不同的状态有不同的行为。也许你会说在方法里加上switch case语句就行了,这样的确能实现这样的方法,但是,就像前面一些设计模式的目的一样,这种方法不具可扩展性,因此我们需要一种设计模式来实现这个功能,并且需要提供可扩展性,因此,就有了状态模式。 来看一个例子: [java] view plaincopyprint?转载 2013-05-18 11:21:42 · 530 阅读 · 0 评论 -
JAVA设计模式-Memento
Memento设计模式用来备份一个对象的当前状态,当需要的时候,用这个备份来恢复这个对象在某一个时刻的状态。 看一段代码: [java] view plaincopyprint?package memento; import java.io.Serializable; class Originator { publi转载 2013-05-19 17:12:14 · 477 阅读 · 0 评论 -
JAVA设计模式-Facade
Facade模式翻译成零售商模式我想更加容易理解。当你想要买一块香皂的的时候,你肯定不会去香皂厂买,而是去超市买,同样,买衣服买手机都不会去厂家,而是去零售商家。我想用代码来解释会更加容易: 首先是不用门面模式来买这些东西: [java] view plaincopyprint?class CoatFactory{ cla转载 2013-05-18 11:05:40 · 481 阅读 · 0 评论 -
JAVA设计模式-Bridge
个人认为Bridge模式是用在对于分类的组合上的,举个例子,在大学里发奖学金,就拿川大来说,一共是32个学院,银行卡有建行、工行、中行和农行,那么发放方式就有计算机学院+工行、计算机学院+建行、数学学院+建行、数学学院+中行等32 x 4=128种方式。一般来说,就需要128个子类来实现发放奖学金这个功能,如果招商银行又加到银行里面来,那么我们就还得写32个类,这样太过于复杂了。因此我们必须想一个转载 2013-05-18 11:04:40 · 396 阅读 · 0 评论 -
JAVA设计模式-Singleton
近来一直在研究JAVA的设计模式,看了很多别人的文章和源码,自己也写了一些,算是有一些认识吧,我想要把这些想法都记录下来。23个设计模式算很多了,希望我能有时间,也有毅力能够坚持下来。下面就是第一个设计模式,Singleton。 这个模式限制了使用这个模式的类只能生成一个对象。有一些对象其实我们完全只需要一个即可,如:线程池(threadpool)、缓存(cache)、注册表(转载 2013-05-18 10:55:59 · 418 阅读 · 0 评论 -
JAVA设计模式-Builder
Builder设计模式类似于Factory,都是用于生产一种产品,但是他们之间还是有一些区别的。至于有什么区别,仁者见仁,智者见智,我会在介绍完Builder模式之后说说我自己的看法,当然我的想法也参考了很多其他人的看法。下面先看一个例子吧: 当要生产的一种产品具有相同的结构,并且每个构件的生产都很繁杂,就可以用Builder模式将具体构件的生产与整个成品的组装分离开来。还是拿本文转载 2013-05-18 10:57:32 · 443 阅读 · 0 评论 -
JAVA设计模式-Prototype
Prototype是很容易理解也很容易使用的一个设计模式,他的意思就是说,我给你一个原型,你照着这个原型给我做一个就行了,至于做好之后我要怎么去修改它让他符合新的需求,这就不管Prototype模式的事了。如果按照这么理解,我们只需要克隆一个一模一样的对象,返回给客户端就行了,重要的问题就是如何克隆。幸运的是,Java已经给我们提供了一个现成的函数,它就叫做clone()。 下面是转载 2013-05-18 11:00:10 · 456 阅读 · 0 评论 -
JAVA设计模式-Adapter
有些时候,我们想要使用一些类的某个功能,但是发现这个类提供的接口不符合我们的要求,这个时候就需要让这个接口符合要求,最直接想到的办法就是去改这个接口,但是这个办法明显违背了面向对象的原则。所以,为了解决这个办法,就提出了Adapter模式。Adapter模式分为两种,一种是类Adapter,一种是对象Adapter,后面将对这两种方法进行详细的解释。 首先是类Adapter。转载 2013-05-18 11:02:11 · 483 阅读 · 0 评论 -
JAVA设计模式-Proxy
代理意思就是说有人帮你做一件事情。举个例子,现在有一份文件想要领导签字,但是领导不是随便就能见的,那么,就只得先去找领导的秘书,告诉秘书想要找领导签字,然后秘书会代替你去找领导签字,然后将签好字的文件还给你。这么做有两个原因,第一个,领导不是随便就能调用的,在这个例子里面,领导的签字功能只有秘书可以调用,当客户端调用领导签字这个功能的时候,秘书会把这个调用截获了,再通过自己去调用领导签字;第二个,转载 2013-05-18 11:03:26 · 438 阅读 · 0 评论 -
JAVA设计模式-Decorator
刚看了一篇博客,讲装饰器模式的,我觉得写得很清楚,我自己就没写了,只是把代码整理了一下,顺便说一下,所有设计模式的代码我都进行了整理,后面我会放到csdn上,这些代码大多数来时internet,但是我会把代码进行简化,让它能够突出设计模式的概念。下面是转帖的内容。 记得以前听一个高手说java.io包采用了了装饰器模式,当时不是很明白什么事装饰器模式,现在,网上看了一下说明和帮助的转载 2013-05-18 11:09:17 · 510 阅读 · 0 评论 -
JAVA设计模式-Command
Command模式就像linux的shell命令一样,输入一条命令,它就能执行相应的操作。例如,我们想要打开电视机,我们不需要用tv.turnOn()这样的方法来打开,而是类似command.exe("turn on the TV")这样的语句。把命令封装起来有一个好处,我们可以记录下执行过哪些命令,在什么时间执行的,是谁执行的。当然,不使用命令模式也可以实现这样的功能,我们只需要在类似tv.tu转载 2013-05-18 11:14:45 · 491 阅读 · 0 评论 -
JAVA设计模式-Observer
Java提供了Observer模式的默认实现,下面我们就看一下Java对观察者模式的支持。 Java对观察者模式的支持主要体现在Observable类和Observer接口。 (1) Observable 类代表 被观察者 (java.util.Observable ) 主要方法有: void setChanged() : 设置被观察者的状态已经被改变转载 2013-05-18 11:15:43 · 545 阅读 · 0 评论 -
JAVA设计模式-Mediator
中介模式实际就像是房屋中介一样,中介维护了一个列表,这个列表包含了各个客户的房屋信息,当某一个客户的房屋信息有了改变之后,这个中介就负责通知自己维护的那个列表中的所有用户某某某进行了改变。 下面是一个例子,这个例子比较绕,但是是我在网上找到的最直接的代码了,我进行了一些简化。 [java] view plaincopyprint?pack转载 2013-05-18 11:20:51 · 463 阅读 · 0 评论 -
JAVA设计模式-Interpreter
解释器模式实现一个简单的文法分析器,个人认为使用不是很广泛。简单的来说,就是它定义了对象与对象之间进行某种操作之后会得到什么值。学过编译原理之后,会对这个模式有更深刻的理解。 还是看一个例子: package interpreter;import java.util.HashMap;abstract class Expression{ //转载 2013-05-18 11:23:02 · 544 阅读 · 0 评论 -
JAVA设计模式-Visitor
Visitor访问者模式定义作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作.在Java中,Visitor模式实际上是分离了collection结构中的元素和对这些元素进行操作的行为.为何使用Visitor?Java的Collection(包括Vector和Hashtable)是我们最经常使用的技术,可是Collection好象转载 2013-05-19 17:13:35 · 502 阅读 · 0 评论