
Java设计模式
爱coding的同学
即使生活过得平淡无奇,也不要忘记最初的梦想
展开
-
Java设计模式之构建者模式
对于这种模式的话,我们先来简单的介绍一下。构建者模式也就是说,将很多的小的部件组建成一个产品。可以分为俩个部分,一个是Builder,这是如何构造出小的部件的类。还有一个是Director,这是如何将小的部件组建成产品的类。原创 2016-05-26 23:15:01 · 335 阅读 · 0 评论 -
GOF之迭代器模式
迭代器模式 其实迭代器模式的话,我们经常使用。现在我们就来学习一个迭代器的底层的实现。 现在我们来学习一下迭代器的底层的实现: package com.bjsxt.iterator; /** * 自定义的迭代器接口 * @author Administrator * */public interface MyIter原创 2016-08-12 21:38:48 · 252 阅读 · 0 评论 -
GOF之策略模式
策略模式(Strategy pattern) 所谓的策略模式指的是什么呢?比如说,我有下面的一个场景?那么我应该怎么做呢? 当然,如果我们没有采用策略模式的话,我们可以像下面这样做: 但是我们的设计模式的原则是当增加新的程序的时候,对原有的程序的修改应该尽可能地少。否则就是不正确的。这是要注意的。 其实,像这种情况的话,我们可以采用的是什么呢?我们可以原创 2016-08-12 21:43:01 · 560 阅读 · 0 评论 -
GOF之享元模式
享元模式学习 其实享元模式在很多的框架中都是使用得很多的。享元模式又叫做FlyWeight,又叫做轻量级。比如我们经常说什么轻量级比赛等。在很多的情况下,享元模式可以很好节省我们的内存。其实,享元模式是利用了以时间来换取空间的策略。其实,在很多的地方,都使用了享元模式,比如我们经常说的String类型的使用,还有就是线程池的使用等等很多的地方。下面我原创 2016-08-12 21:50:46 · 373 阅读 · 0 评论 -
GOF之组合模式
GOF之组合模式 组合模式 首先,我们要明白的一点是:组合模式和我们平常经常使用的组合是不一样的。组合其实是和继承的功能是差不多的。但是我们的组合模式最适合处理的是一些树形结构的框架。比如我们经常使用的杀毒软件框架就是这样设计的。一个杀毒软件它会对所有的文件和文件夹的内容都进行扫,文件夹下又包含文件的内容。这样的话,原创 2016-08-12 21:54:31 · 568 阅读 · 0 评论 -
GOF之装饰模式
GOF之装饰模式 装饰模式 所谓的装饰模式,其实就是为了给产品增加新的功能而产生的。装饰模式你当然可以使用继承的功能来进行实现,但是这样的话,肯定会显得十分的累赘,这是十分不好的。比如说,我举一个例子:比如我想造一辆汽车,这辆汽车除了可以在陆地上跑以外,我还想它可以在水里游,在天上飞,还可以原创 2016-08-12 21:59:08 · 340 阅读 · 0 评论 -
GOF之外观模式
GOF之外观模式 外观模式如果谈起外观模式的话,那么其实应该是最简单的一种模式了。所谓的外观的模式的话,说白了,就是体现了Java中的一种好的封装性。一种好的封装性就体现了设计模式中的外观模式。更简单的说就是,对外提供的接口就要尽可能的简单。比如说,如果我要喝茶的话,我就要煮开水,又要洗茶具,还要沏茶等,这些步骤原创 2016-08-12 22:01:04 · 467 阅读 · 0 评论 -
GOF之适配器模式
GOF之适配器模式 GOF设计模式之适配器模式 从现在开始我们由建造模式进入到结构模式。相比于建造模式,结构模式或许对我们的设计的帮助是更大的。我们一个产品弄完以后,不是就是一劳永逸了。我们需要对产品进行维护。所以说,如果在产品的设计的初衷,如果我们已经使用了比较好原创 2016-08-12 22:06:16 · 469 阅读 · 0 评论 -
GOF之桥接模式
GOF之桥接模式 桥接模式的使用 桥接模式适合于java中的多重继承关系的处理。一般来说,如果出现二维以上的维度的变化的时候,那么就可以利用桥接模式来进行处理。那我们什么时候使用桥接模式呢?比如我举一个例子。比如说,一个销售电脑的。销售台式机,笔记本电脑,pad电脑。而品牌又有lenovo,shen原创 2016-08-12 22:10:00 · 418 阅读 · 0 评论 -
GOF之静态代理模式
GOF之静态代理模式 代理模式的使用 其实代理模式无论是在我们的日常工作中,还是在工作中,都是很常见的。比如说,有一个客户需要找周杰伦唱歌。那么这个客户不会直接找周杰伦谈。他会先找周杰伦的经纪人来谈。这个经纪人其实就相当于一个代理的角色。代理角色可以处理的工作有面谈(confer),签合同(signcontract),原创 2016-08-12 22:14:06 · 374 阅读 · 0 评论 -
GOF之动态代理模式
GOF之动态代理模式 动态代理模式 我们在先前的学习中,已经学习了如何使用静态代理模式。那么接下来我们要学习的就是动态代理的模式。 所谓的动态代理模式,也就是我们不需要自己再写一个代理的角色。而通过一些工具的调用或者说是一些API的调用,我们就可以这样生成一个代理的角色。现在我们就来学习一下如何利用Java JDK中的相关的原创 2016-08-12 22:17:01 · 581 阅读 · 0 评论 -
代理模式与装饰模式之间的区别
我们知道代理模式和装饰模式之间是很相似的。把它们的实现代码改一下就可以相互转化。那么代理模式和装饰模式之间到底有什么区别呢? 代理模式中,代理类对被代理的对象有控制权,决定其执行或者是不执行。但是在装饰模式中,装饰类对象对代理类对象没有控制权,只能够为其增加一层装饰,以加强被装饰对象的功能,仅此而已。 那么什么情况下用代理模式,什么情况下用装饰模式呢?那就得看情况了。如果只是原创 2017-05-15 10:52:43 · 386 阅读 · 0 评论 -
GOF之结构型模式总结
结构型模式总结 至此为止,我们的结构型模式已经是学习完了。现在我们来做一个总结。 接下来我们需要学习的就是行为型模式。原创 2016-08-12 21:36:26 · 267 阅读 · 0 评论 -
GOF之解释器模式
解释器模式和访问者模式 这俩种的设计模式,在我们的日常开发当中,其实用得是比较少的。在这里的话,我们只需要做了解就可以了。原创 2016-08-12 21:33:30 · 320 阅读 · 0 评论 -
Java设计模式之原型模式
下面我们来学习一下原型模式。所谓的原型模式,我们可以简单的理解为是克隆模式。但是克隆也分为浅克隆和深克隆。那么为什么要使用原型模式呢?比如说我们已经创建好了一个对象。但是创建这个对象比较耗时。如果,我们再另外的创建一个对象的话,那么就会耗费更多的内存和时间。这时候,我们就可以使用原型模式。再举一个日常生活中,我们常见的例子,比如说,在考试中,A同学完成了卷子,但是完成这个卷子需要花费不少的时间。B原创 2016-05-27 21:48:40 · 310 阅读 · 0 评论 -
Java设计模式值简单工厂设计模式
在设计原则中有这样一句话“我们应该针对接口编程,而不是正对实现编程”。这就是所谓的DIP原则。但是我们还是在一直使用new关键字来创建一个对象,这不就是在针对实现编程么? 针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。入股代码是针对接口而写,那么可以通过多态,它可以与任何新类实现该接口。但是,当代码使用一大堆的具体类时,等于是自找麻烦,因为一旦加入新的具体类,就必须要改变原创 2016-05-20 16:46:25 · 250 阅读 · 0 评论 -
Java设计模式之工厂方法设计模式
更多的关于工厂方法设计模式的内容请移步:http://www.cnblogs.com/chenssy/archive/2013/05/24/3096161.html;/*接口是实现多重继承的重要的途径,而生成遵循某个接口的对象的典型的方式是工厂方法设计模式。这与直接调用* 构造器不同。我们在工厂对象上调用是创建的方法,而该工厂对象将生成接口的某个可以实现的对象。理论上* 通过这种方式,我们原创 2016-05-20 11:04:35 · 325 阅读 · 0 评论 -
Java设计模式之抽象工厂设计模式
前言:首先,我们想一想我们为什么要使用抽象工厂模式?我们可能会遇到这种情况。比如说,我们要求实现一个产业链,也就是说,我们需要多个接口和各个接口的实现类。如果是这种情况的话,那么很明显的是,上面介绍过的简单工厂模式和工厂方法模式都是行不通的。因此,我们需要使用一种新的设计模式,也就是所谓的抽象工厂设计模式。这个模式其实是为了实现所谓的一个产业链而提出的。其实,用产业链来形容似乎不太合适。那这样说吧原创 2016-05-20 18:20:16 · 313 阅读 · 0 评论 -
Java设计模式之单例设计模式
在聊单例设计模式之前,我们首先来了一个设计模式的分类以及相关的概念。设计模式指的是GOF23,GOF指的是Group of four,直译过来就是“四人帮”。接下来我们聊一下什么是单例设计模式:所谓的单例设计模式指的是:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。这是要注意的。更加详细的内容请看下面的一幅图:比如说我们的任务管理器。任原创 2016-05-20 20:24:10 · 735 阅读 · 0 评论 -
GOF之原型使用序列化和反序列化实现深复制
原型模式之------序列化和反序列化 原型模式之通过序列化和反序列化实现深复制 其实,我们什么时候会使用原型模式呢?一般来说,如果创建一个对象是比较耗时的话,我们就会考虑使用原型模式。但是,在实际的应用中,我们很少会直接使用原型模式。一般来说,原型模式都是和工厂方法模式结合起来使用的。这是要注意的。//如何通过序列化和反序列化的方式来实现深克隆原创 2016-08-12 20:47:36 · 542 阅读 · 0 评论 -
GOF之观察者模式(2)
观察者模式(Observer pattern2) 这次主要学习的是JDK中提供的观察者模式。关键的接口是Observer,Observable。 package com.bjsxt.observer2; import java.util.Observable;import java.util.Observer;//观察者对象 pu原创 2016-08-12 21:04:03 · 308 阅读 · 0 评论 -
GOF之观察者模式(一)
观察者模式(Observer pattern) 观察者模式其实在我们的很多应用中都是经常使用到的。那么什么是观察者模式呢?我们先来看一个例子。 比如说,我们在玩CS游戏的时候,加入我的位置状态发生了变化,那么我的状态的变化,就会传给服务器,然后服务器再再我的状态的变化传给所有的游戏玩家。这样的一个过程,其实利用的就是观察者模式。 其中,被观察的对象叫做目标原创 2016-08-12 21:09:36 · 580 阅读 · 0 评论 -
GOF之状态模式
状态模式(State pattern) 什么是状态模式呢?所谓的状态模式,指的是对于同一个对象而言,不同的状态对应着不同的行为,同时,这些状态和行为之间是可以转化的,由一个状态转向另外的一个状态。其实这样的例子生活中是很多的。 最常见的应该是红绿灯了。一共有三个状态。其中,红灯表示的是不可以通过,黄灯表示的是警告,绿灯表示的是可以通行。这是是同一个对象对应着不同的状态原创 2016-08-12 21:13:34 · 1180 阅读 · 0 评论 -
GOF之中介者模式
中介者模式 所谓的中介者模式其实就是衍生出一个中介的角色,让这个中介者来协调各个部门之间的工作。比如我们在买房子的时候,就会有有一个中介来协调买房者和卖房者之间的关联。在比如在我们的日常生活当中,就好比如一间公司中有研发部,市场部,还有财务部。如果没有总经理这个中介者身份的话,那么就只是让这几个部门它们自己去协调的话,其实它们之间很容易就形成了一个网状的结构,这样的结构看起来是比较复杂的原创 2016-08-12 21:18:00 · 390 阅读 · 0 评论 -
GOF之模板方法模式
模板方法模式 什么是模板方法模式呢?其实如果说得更加接地气的话,应该说是多态的一个应用,或者说是回调函数或者说是钩子函数。这是要注意的。 那么在日常的开发当中,我们应当如何使用模板方法模式呢? 我们来看一个简单的例子: package com.bjsxt.templateMethod; public a原创 2016-08-12 21:25:27 · 451 阅读 · 0 评论 -
责任链模式
责任链模式 所谓的责任链模式的话,我们可以简单的理解为是什么呢?我举一个简单例子。比如说在一个公司中,有一个员工请假了。那么我们规定,如果请假的天数小于3天的话,那么主任可以处理。如果小于10天的话,那么经理可以处理。如果小于30天的话,那么总经理可以处理。主任,经理和总经理之间就形成了一条责任链。请假这一个请求就沿着这条责任链传递,直到这个请求被处理了为止。这就是所谓的责任链模式。原创 2016-08-12 21:21:54 · 337 阅读 · 0 评论