设计模式
zw0283
本人喜好学习和研究技术,有志同道合的朋友可以一起学习
展开
-
设计模式之-----简单工厂模式
首先说明什么是简单工厂模式:(取自百度百科)简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。用途:外界不必关心创建对象的具体细节,只需要调用工厂方法,然后使用原创 2015-06-25 22:32:01 · 687 阅读 · 0 评论 -
设计模式之-----装饰者模式
今天学习了设计模式里的装饰者模式,所谓的装饰模式,顾名思义,就是将一个对象层层装饰,就如同人穿衣服一样,由内到外,衣服要一层一层的穿好,才能出门,对象也是一样,对象经过层层包装,最后包装好的对象,才是我们最后想要的。引用百度百科的一句话: 装饰者模式就是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。用一个例子,更能说明其作用。(注:本例子是引用了博主为:java_my原创 2015-07-21 09:47:49 · 407 阅读 · 0 评论 -
设计模式之-----解释器模式
今天来学习解释器模式,关于这个模式,我看完之后还真是找不出什么例子。。这个模式的主要用途我感觉是在语言的编译中,在现实项目中应该很少会有这样的需求,而且我经验也不多,一时半会真是想不起来怎么理解这个,恕本人才疏学浅,只能在网上找一些前辈写的东西先看一看,以后想到更好的例子之后再来改正。我引用的是java_my_life的一篇博客,写的不错,链接地址贴给大家,http://www.cnblogs原创 2015-08-14 09:30:53 · 532 阅读 · 0 评论 -
设计模式之-----代理模式
今天学习了代理模式,一开始一头雾水的,感觉完全就是给自己填麻烦,一个好好的类,直接调用就成,为什么还要费半天劲去用代理呢?看了看公司的工程之后,就明白它存在的意义了,举个例子来说,比如你想买个房子,你第一时间会做什么?我想你一定会上网搜一搜,房子的价格,位置,周围物业等信息,对么?这个时候,网上的这些资料就可以看做是一个代理,如果没有这些代理,我们就只能一个一个的去实地考察,那样会累死的。。看原创 2015-07-21 16:08:29 · 368 阅读 · 0 评论 -
设计模式之-----工厂方法模式
今天来学习工厂方法模式,这个工厂方法模式可以看做是简单工厂模式的升级版,但是在我学习的过程中发现,简单工厂模式与工厂方法模式虽然相似,但是,简单工厂模式却违反了设计模式六大原则的--开-闭原则,而工厂方法模式在一定程度上将新增的需求对于修改原来的代码的情况降低了许多。这也是工厂方法模式的优点之一。工厂方法模式也有缺点,看完这个例子就会明白。还是拿简单工厂模式的那个计算器的例子先看包结构原创 2015-07-22 09:46:23 · 377 阅读 · 0 评论 -
设计模式之-----备忘录模式
今天学习备忘录模式,备忘录模式很简单,我们举个例子来说,大家都在电脑上玩过象棋,象棋有个“悔棋”的功能,想必大家都用过,那这个悔棋就可以看做是一个备忘录模式。在学习备忘录模式之前,先搞明白三个概念:1、发起人(Originator),其实这个概念我说不太清楚,说白了,谁需要备份,谁就是发起人。拿悔棋的例子来讲,象棋就是一个发起人。2、备忘录(Memento),将发起人的具体状态存储到这原创 2015-08-03 09:42:47 · 575 阅读 · 0 评论 -
设计模式之-----原型模式
今天来学习设计模式中的原型模式,原型模式分为两种,一种是“浅复制”,一个是“深复制”。先来说原型模式,原型模式说白了,就是一种复制模式,将已经新建好的对象,通过复制的形式,来给另一个对象赋值,在效率上,要远远好于new方式来实例化对象。在复制的时候,会有一些问题,就是,默认的复制只会复制java的基本类型,包括String,但是对于类中的对象,只是复制它的引用,并没有从根本上去复制。举个例原创 2015-07-23 10:34:06 · 409 阅读 · 0 评论 -
设计模式之-----组合模式
今天学习了组合模式,刚开始在网上看例子的时候,感觉很乱,而且没有一个比较具体的例子,所以特意想了一个例子,并且用组合模式实现,最后我给出了结构图,有助于各位的理解。组合模式的适用范围是用户需要忽略组合对象与单个对象的差异。这句话反正我是看不懂,举个例子来讲,我们买了一台笔记本电脑,但是用了一段时间之后坏了,我们就需要去维修部修理,维修部门有两种,一种是电脑官方的维修部门,还有一种是个人代理,官原创 2015-08-04 10:10:51 · 380 阅读 · 0 评论 -
设计模式之-----模板方法模式
今天学习模板方法模式,模板方法模式很简单,通俗的来讲,模板方法就是将一系列的顺序排好的,但是具体实现可能不一样的一种模式。这说起来有点绕口,也不好理解,我们举个例子先。每个人都去过超市买东西,那么,买东西的这个操作有没有什么规律呢?当然有,我想,所有的人都是三个步骤——进入超市,拿东西,付钱。好,那么我们就以上边的这个例子,根据实际代码,来理解一下什么是模板方法首先,根据那三个具体步骤原创 2015-07-24 10:44:46 · 358 阅读 · 0 评论 -
设计模式之-----迭代器模式
今天来学习迭代器模式,就目前来说,迭代器模式的实用价值已经远远不如它的学习价值大了,因为现在好多高级语言已经把迭代器模式融入进自身的语法之中了,在一个正式的项目中,要自己去实现迭代器的情况还是十分少见的。基本上语言本身提供的迭代器就足够我们使用了。就拿Java来说,Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List原创 2015-08-05 09:10:45 · 375 阅读 · 0 评论 -
设计模式之-----单例模式
今天学习了单例模式,网上有一些讲解,真心不错,我在这里归纳总结一下。首先来说明一下什么是单例模式,所谓单例模式,就体现在了这个“单”上,也就是说,在同一个JVM中,保证该类只有一个实例对象,这种模式在框架中用的很多,比如数据库连接的时候,就大量使用了这个模式。在来说说什么时候使用,具体什么时候使用,我觉得还要具体结合需求来定,一般而言,大量相似的重复操作,就没必要每次都new一个对象出来,原创 2015-08-06 09:57:57 · 361 阅读 · 0 评论 -
设计模式之-----六大原则
设计模式中,有六大经典的原则,以下是本人在学习过程中总结的,学习过程中参考了《大话设计模式》这本书,以下为个人见解,如有不当,请大家指出。以便帮助后学习的朋友更简单的理解和学习。1、单一职责原则(Single Responsibility Principle) 顾名思义,单一职责,就是让系统中的每个类都有自己的事情,不要“乱掺和”,一个类,只做一件事情,只让一个“事件”来驱动,例如:原创 2015-07-20 10:14:56 · 401 阅读 · 0 评论 -
设计模式之-----享元模式
今天学习享元模式,所谓享元,就是通过与其他类似对象共享数据来减小内存占用。也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。像我们平时用的word等软件,如果每个字符都要单独占一块内存,那估计我们打开一本小说,内存就撑爆了,电脑中把一个字放到内存中,如果要使用这个字,那就直接引用这个字的内存地址就可以了,而不必每次都要实例化一遍这个字,那样太浪费资源了。原创 2015-08-13 09:49:25 · 516 阅读 · 0 评论 -
设计模式之-----外观模式
今天学习了外观模式,给我第一感觉就是。。。。没感觉,之后自己做demo的时候才发现,自己学完之后没有感觉就是因为平时用的太多了,以前没有模式的概念,自然不往这个方面去想,现在学完之后,发现自己很早之前就会了,所以就没什么感觉。。好,言归正传,所谓的外观模式,主要目的我感觉就是解耦,比如我们有三个不同的类,客户需要完成的工作需要这三个类来一起完成,怎么办呢?把这三个类暴露给客户么?那样的话,耦合原创 2015-07-25 12:45:23 · 418 阅读 · 0 评论 -
设计模式之-----建造者模式
今天学习了建造者模式,所谓建造者,就是将步骤一样,但是具体内容不一样的方法封装起来。我个人感觉和工厂模式有些相似之处。首先举个例子,汽车生产的时候,不管什么汽车,组装的步骤,方式,大体上都是一样的,从这个角度来看,宝马汽车和奇瑞QQ就是一样的,他们都是汽车,区别就在于他们的用料,以及具体细节的不同,我们就用这个为例子。我不在过多的解释了,代码里有注释的。首先看包结构下边是具原创 2015-07-26 14:00:38 · 367 阅读 · 0 评论 -
设计模式之-----观察者模式
今天学习了观察者模式,这几天感冒了,学习的时候满脑袋都是浆糊。。。乱的不得了,有一点我还没有搞清楚,就是观察者和被观察者是什么,也不能说不明白,只是还不太确定。所谓观察者模式,就是让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。这是我在网上看到的,几乎所有的博客都有这句话。。。这话太官方了,让我这种初学者十分难受,我自己捋原创 2015-07-27 10:08:36 · 434 阅读 · 0 评论 -
设计模式之-----抽象工厂模式
今天来学习抽象工厂模式,所谓的抽象工厂,其实和工厂模式有相似之处,在介绍抽象工厂之前,先了解两个概念:产品族和产品等级我不要官方的话解释,那样太晦涩难懂,我先给大家看一张图,看完之后我想大家能对这个概念有个了解。这是我用Visio画的,从这个图看,是不是很直观的看出他们的定义呢?由不同的产品等级的产品构成了一个产品组。他们之间大概就是这个关系。然后回到抽象工厂模式,我们根据原创 2015-07-28 10:40:45 · 356 阅读 · 0 评论 -
设计模式之-----命令模式
今天继续学习设计模式的命令模式,命令模式在生活中算是比较常见的,比如在《大话设计模式》中,“命令模式”一节中举得烤羊肉串的例子,小摊贩烤的羊肉串,由于没有记录,导致人多的时候,很容易忘记哪个顾客要的什么,要了多少,是否给钱了,要不要辣椒,这些都很容易记混的。而在一个正式的店面中,有专门的服务员负责记录,服务员通知后厨去烤羊肉串,顾客不必与厨师亲自打交道,这就体现了一个命令模式的特点,将命令请求者与原创 2015-08-10 09:23:26 · 505 阅读 · 0 评论 -
设计模式之-----职责链模式
今天来学习职责链模式,以下是官方定义:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。我们暂且不必管它,熟悉J2EE的人都知道拦截器(Filter),这个f原创 2015-08-11 09:41:59 · 496 阅读 · 0 评论 -
设计模式之-----适配器模式
今天来说一说适配器模式,我先来举个例子,我们国家的电压是220V,可能有的国家是110V,那如果我们去旅游,到了那里想给手机充电怎么办呢?直接冲肯定不行,可能还会s损坏手机,这时候我们就需要一个转换器了,吧110v转换为220v,这样就可以了。这个时候,这个转换器就充当了适配器的角色。学习之前我们先了解一下概念1、目标接口(Target):客户所期待的接口。通俗的来讲,就是我们所需要的22原创 2015-07-30 09:42:26 · 395 阅读 · 0 评论 -
设计模式之-----状态模式
今天继续学习状态模式,通俗来讲,就是每个不同的状态会有不同的行为,拿现实生活来说,一个普通的上班族,7点的状态是刚刚起床,9点的状态是刚上班,精力充沛,12点的状态是吃饭。。。等等。在每一个不同的状态中,会有对应的事情要取做,那么这个状态模式怎么写呢?首先我第一想到的就是if-else。那我们一天有24小时,我们岂不是要写24个if-else么?那实在太恐怖了,而且一旦有变动,代价可是十分大的,所原创 2015-07-29 09:50:01 · 430 阅读 · 0 评论 -
设计模式之-----中介者模式
今天学习中介者模式,话说都快学完了,很快啊,还有最后几个,加油啊!!所谓中介者模式,一看名字就明白了,我们在外生活,免不了与各种中介打交道,比如在外工作需要租房子,我们人生地不熟的,不可能一下子就找到合适的房子,那么这个时候我们就需要中介来帮忙了,我只需要告诉中介我们需要什么样的房子,剩下的就不用我们管了,中介会按照我们的标准去联系在他这里注册过的房东,如果有符合要求的,那么用户与房东签协议,原创 2015-08-12 09:36:43 · 581 阅读 · 0 评论 -
设计模式之-----策略模式
最近手头工作比较多,好长时间没有看设计模式了,今天把之前的复习了一下,顺便又学习了一个新的模式:“策略模式”。由于我在这方面还是小白,我在学习策略模式的时候,总感觉和简单工厂模式差不多。。。基本上没差别,在网上搜了搜,大多都是概念性的对象,不太好理解,希望有经验的朋友能帮我解惑一下,可以在下边留言,先谢过了。还是,先来一段一个概念(取自百度百科)策略模式定义了一系列的算法,并将每一个算原创 2015-07-20 09:45:12 · 499 阅读 · 0 评论 -
设计模式之-----桥接模式
今天来学习桥接模式,在我们日常生活中,有很多的事物是可以“多维度”的变化的,比如我们去吃面条,有鸡丝面和牛肉面两种,每一种面又分为辣味的和不辣的,而且每种面可能会分为大碗小碗的。。。很多事物能够变化的维度不止一种,甚至数十种,那么我们在代码上怎么应对这些变化呢?每一个都单独弄一个类显然不是什么好办法。。那么我们就需要用到今天学习的桥接模式了。只知道概念是不够的,那么我们怎么去做呢?简单的来说,原创 2015-08-07 13:54:20 · 467 阅读 · 0 评论