随笔分类 - 设计模式小记
1
摘要:节前把3个设计模式的学习心得分享了一下,分别是适配器模式,装饰模式,代理模式。 但是似乎越写越有些迷糊,这三种模式都有着一些大同小异的地方,总是有些搞不清。 今天再重新学习下,把学习心得分享给大家一下。这次是结合的我工作中的实际项目。 设计模式,其实是一种解决方法,Java作为一种面向对象的语言,对
阅读全文
摘要:原文:(六)观察者模式详解(包含观察者模式JDK的漏洞以及事件驱动模型) 作者:zuoxiaolong8810(左潇龙),转载请注明出处。 本章我们讨论一个除前面的单例以及代理模式之外,一个WEB项目中有可能用到的设计模式,即观察者模式。 说起观察者模式,LZ还是非常激动的,当初这算是第一个让LZ感
阅读全文
摘要:被观察者 观察者: 测试: 但这种写法有点问题,观察者需要手动一个一个add进去,太麻烦 改进下:被观察者不变 观察者: 测试类: 更实用点的例子:小说网站作者和读者之间的订阅 作者类: 然后我们还需要一个管理器帮我们管理这些作者。如下。 好了,这下我们的观察者模式就做好了,这个简单的DEMO可以支
阅读全文
摘要:在阎宏博士的《JAVA与模式》一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极
阅读全文
摘要:阅读目录 如果有这样的需求: 1 不想再bean.xml加载的时候实例化bean,而是想把加载bean.xml与实例化对象分离。 2 实现单例的bean 以上的情况,都可以通过工厂方法factory-method来创建bean。 这样再加载bean.xml时,不会直接实例化bean,而是当调用fac
阅读全文
摘要:Spring事件监听实现了观察者模式。本Demo在junit4测试环境中实现 主要有三个类事件类、监听器类、事件发布类(入口) 事件类必须继承 ApplicationEvent,代码如下: 监听器Listener类需实现 ApplicationListener 接口 ApplicationLis
阅读全文
摘要:Java多线程编程中,常用的多线程设计模式包括:Future模式、Master-Worker模式、Guarded Suspeionsion模式、不变模式和生产者-消费者模式等。这篇文章主要讲述Future模式,关于其他多线程设计模式的地址如下:关于其他多线程设计模式的地址如下:关于Master-Wo...
阅读全文
摘要:这也是篇老文了,相信很多人也看过。前面那些废话就不翻译了,直接切入正题吧~结构型模式:适配器模式:用来把一个接口转化成另一个接口。java.util.Arrays#asList()javax.swing.JTable(TableModel)java.io.InputStreamReader(Inpu...
阅读全文
摘要:观察者模式在Java中有两种实现方式,上文是一种方式,这种方式是自己写代码实现。另一种方式是使用Java内置的观察者模式来实现。相关的接口和类如下:java.util.Observable 主题(可观察者)------classjava.util.Observer 观察者 -------interf...
阅读全文
摘要:本文参考Head First设计模式一书,感觉书中的例子实在很好,很贴切。对模式的知识点进行总结,并对书的源码做了一定注释。观察者模式要点有二:主题和观察者。最贴切的案例是:杂志订阅,杂志是主题,观察者是订阅者。当出版新杂志时候,这个事件会自动通知所有的订阅者。根据OO基本原则,应该针对接口编程(当...
阅读全文
摘要:第一种(懒汉,线程不安全):1publicclassSingleton{2privatestaticSingletoninstance;3privateSingleton(){}4publicstaticSingletongetInstance(){5if(instance==null){6inst...
阅读全文
摘要:中国古代对妇女制定了“三从四德”的道德规范,“三从”是指“未嫁从父、既嫁从夫、夫死从子”,也就是说一个女性,在没有结婚的时候要听从于父亲,结了婚后听从于丈夫,丈夫死了还要听儿子的,举个例子来说,一个女的要出去逛街,同样这样的一个请求,在她没有出嫁前她必须征得父亲的同意,出嫁之后必须获得丈夫的许可,那丈夫死了怎么办?一般都是男的比女的死的早,还要问问儿子是否允许自己出去逛街,估计你下边马上要问要是没有儿子怎么办? 既然有这么多的问题,那我们要想办法来解决这些问题,我们可以抽象成这样一个结构,女性的请求先发送到父亲类,父亲类一看是自己要处理的,就回应处理,如果女儿已经出嫁了,那就要把这个请求...
阅读全文
摘要:接下来讲命令模式,这个模式从名字上看就很简单,命令嘛,老大发命令,小兵执行就是了,确实是这个意思,但是更深化了,用模式来描述真是是世界的命令情况。我们就以项目组为例子来讲述命令模式。 项目的成员分工也是采用了常规的分工方式,分为需求组(Requirement Group,简称RG)、美工组(Page Group,简称PG)、代码组(我们内部还有一个比较优雅的名字:逻辑实现组,这里使用大家经常称呼的名称吧,英文缩写叫Code Group,简称CG),加上项目经理,刚开始的时候客户(也就是旅行社,甲方)还是很乐意和我们每个组探讨,比如和需求组讨论需求,和美工讨论页面,和代码组讨论实现,告诉他...
阅读全文
摘要:几天没写设计模式的总结了,工作上要学的事情多,觉得写写挺麻烦。可是这几天下来发现没写总结后,新学的几个模式之间的区别都搞混淆了,看来做学问真的是没有捷径的。写吧!先来看一个公司的部门关系怎么样,由于各个部门之间都会有交互,是不是显得逻辑很混乱?可想而知,就算实现了,日后维护也是相当困难的。于是就有了中介者模式:中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单的说,就是一个星型拓扑图抽象中介者类:public abstract class AbstractMediator {protected Purc
阅读全文
摘要:模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类中可以不改变的一个算法的结构即可重定义该算法的某些特定步骤。 首先来看下模板方法模式的结构图: AbstractClass是抽象类,其实也就是一抽象模板,定义并实现了一个模板方法。即templeteMethod。这模板方法一般是一个具体方法(在抽象类中实现了的基本方法叫做具体方法;在抽象类中没有实现,在子类中实现了叫做抽象方法),它给出了一个顶级逻辑的骨架,而逻辑的组成步骤(doAnything、doSomething)在相应的抽象操作中,推迟到子类实现。顶级逻辑也可以调用一些具体方法。子类不重写temple.
阅读全文
摘要:好,请安静,后排聊天的同学别吵醒前排睡觉的同学了,大家要相互理解嘛。今天讲适配器模式,这个模式也很简单,你笔记本上的那个拖在外面的黑盒子就是个适配器,一般你在中国能用,在日本也能用,虽然两个国家的的电源电压不同,中国是220V,日本是110V,但是这个适配器能够把这些不同的电压转换为你需要的36V电压,保证你的笔记本能够正常运行,那我们在设计模式中引入这个适配器模式是不是也是这个意思呢?是的,一样的作用,两个不同接口,有不同的实现,但是某一天突然上帝命令你把B接口转换为A接口,怎么办?继承,能解决,但是比较傻,而且还违背了OCP原则,怎么办?好在我们还有适配器模式。 Target是一个类(接.
阅读全文
摘要:女娲补天的故事大家都听说过吧,今天不说这个,说女娲创造人的故事,可不是“造人”的工作,这个词被现代人滥用了。这个故事是说,女娲在补了天后,下到凡间一看,哇塞,风景太优美了,天空是湛蓝的,水是清澈的,空气是清新的,太美丽了,然后就待时间长了就有点寂寞了,没有动物,这些看的到都是静态的东西呀,怎么办?别忘了是神仙呀,没有办不到的事情,于是女娲就架起了八卦炉(技术术语:建立工厂)开始创建人,具体过程是这样的:先是泥巴捏,然后放八卦炉里烤,再扔到地上成长,但是意外总是会产生的: 第一次烤泥人,兹兹兹兹~~,感觉应该熟了,往地上一扔,biu~,一个白人诞生了,没烤熟! 第二次烤泥人,兹兹兹兹兹兹兹兹~.
阅读全文
摘要:中国的历史上很少出现两个皇帝并存的时期,是有,但不多,那我们就认为皇帝是个单例模式,在这个场景中,有皇帝,有大臣,大臣是天天要上朝参见皇帝的,今天参拜的皇帝应该和昨天、前天的一样(过渡期的不考虑,别找茬哦),大臣磕完头,抬头一看,嗨,还是昨天那个皇帝,单例模式,绝对的单例模式,先看类图: 单例模式最大的特点就是在类里有一个private构造函数,保证这个类不被其他类new出来。而getInstence是用来获得此类唯一的有一个实例化对象的方法。经典的单例模式代码:@SuppressWarnings("all")public class SingletonPattern {p
阅读全文
摘要:什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人能干活呀。 比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理。 先定义一个这类女人的接口KindWoman,接口里写几个抽象方法“抛媚眼”、“ooxx”。然后定义具体的这类女人——潘金莲,实现接口和里面的两个方法。接下来才是代理模式的精华。定义一个代理——王婆,其实她和“潘金莲”类都是KindWoman的实现类(或子类),不同的是,她里面还定义了一个KindWoman的属性,并包含一个构造.
阅读全文
摘要:最近在学设计模式,工作之余也看了一些书。怕以后忘了,对于每个设计模式,及时做个积累!刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,妙计是放置在锦囊里,俗称就是锦囊妙计嘛,那赵云就是一个只是干活的人,从锦囊中取出妙计、执行的人。如上图,诸葛亮给了赵云三个妙计(BackDoor等),分别实现IStrategy妙计接口,并实现接口里的operate()方法,即个妙计的具体内容。妙计得放在锦囊里,Context就是锦囊。它里面定义了一个妙计IStrategy类型变量,并有一个构造函数。客户端(调用者、赵云)向Context传入具体的妙计子类,并通过调用Context的operate方法
阅读全文
1