设计模式
文章平均质量分 92
GarfieldEr007
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java设计模式之代理模式
代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。为什么要采用这种间接的形式来调用对象呢?一般是因为客户端不想直接访问实际的对象,或者访问实际的对象存在困难,因此通过一个代理对象来完成间接的访问。在现实生活中,这种情形非常的常见,比如请一个律师代理来打官司。下面例子的代码可以访问源码。欢迎star,欢迎fork代理模式的U...转载 2018-06-17 18:47:45 · 1532 阅读 · 0 评论 -
论面向组合子程序设计方法 之 失乐园 之补充
失乐园发了之后。有的朋友对“OO是一种自顶向下的方法论”的论述有些疑问。 这里补充一下。 如果认可OO是一个责任分配体系,那么自顶向下就是一个自然的逻辑结论。 没有分析出来“需求”,也就无所谓“责任”,于是根本就无所谓“OO”了。 这种从分析需求,分解需求,分配责任,再分析子需求,分解子需求,在子模块内分配责任的方式,被我称为“自顶向下”。 至于说xp, tdd和自顶向下是不矛盾的。它们也都是要依...转载 2018-06-15 23:47:47 · 826 阅读 · 0 评论 -
论面向组合子程序设计方法 之 燃烧的荆棘
唧唧歪歪一大堆。肯定早有人不耐烦了。 "你丫还有没有点实在的东西呀?" 要是我,可能也早就忍不住了。 好,好。我其实并没有忘记前面说的那个logging的例子。卖了这么长时间的关子,除了有想形而上的虚荣心外,也是想给大家多一点时间来嚼一下这个例子,让熟悉OO的朋友肚子里面多少有个腹稿。 下面,我来继续上回书说到的这个logging。 前面列举了那么一大堆乱七八糟的需求,不知道是不是有人和我一样看着...转载 2018-06-15 23:48:41 · 727 阅读 · 0 评论 -
面向组合子程序设计方法 之 新约
每个小孩刚开始走路的时候都是跌跌撞撞的。 我们不自量力,妄图踩着上帝的步伐前进。结果就是这么几个简单的象白开水似的类。失望吗?是不是造物试图模仿造物主本身就是一种可笑的狂妄呢? 别急,让我们失声痛哭之前先看看我们这几步走的是不是一钱不值。 [list] 1。logger可以把信息打印到log文件中。 容易,直接创建一个WriterLogger就好了。 2。不同的重要程度的信息也许可以打印到不同的文...转载 2018-06-15 23:49:28 · 767 阅读 · 0 评论 -
论面向组合子程序设计方法 之 oracle
不少朋友说我的阐述很苍白无力。这让我很苦恼。我确实是拚了命地想把问题说清楚,我也有实际non-trivial的项目经验,怎么就说不明白呢?哎! 所以,还是不能不多罗嗦一下,希望能够再阐述得明白一点。 其实,所谓co,有心的朋友也许能够感觉到,它很象是设计一门语言。 它有顺序/分支,有函数调用,异常处理,基本上一个程序设计语言有的东西它都有了。这些顺序/分支作为语言的基础设施,而一些应对具体需求的原...转载 2018-06-15 23:50:14 · 727 阅读 · 0 评论 -
论面向组合子程序设计方法 之 重构
迄今,发现典型的几种疑问是: 1。组合子的设计要求正交,要求最基本,这是不是太难达到呢? 2。面对一些现实中更复杂的需求,组合子怎样scale up呢? 其实,这两者都指向一个答案:重构。 要设计一个完全正交,原子到不可再分的组合子,也许不是总是那么容易。但是,我们并不需要一开始就设计出来完美的组合子设计。 比如,我前面的logging例子,TimestampLogger负责给在一行的开头打印当前...转载 2018-06-15 23:51:06 · 1017 阅读 · 0 评论 -
论面向组合子程序设计方法 之 南无阿弥陀佛
其实,前面我还忘了提一个非常重要的基本组合子:singleton。 这里补充提一下: Java代码 class SingletonComponent implements Component{ private final Component c; private Object val; public Class getType();{ return c.getType...转载 2018-06-15 23:51:51 · 810 阅读 · 0 评论 -
论面向组合子程序设计方法 之 重构2
已经有点感觉用ioc container来说明co不见得是个好主意了。 这个container的例子举出来,明显提出意见的人比那个简单的logging例子少了很多。 毕竟连pico是怎么回事,怎么用,很多人都还不见得了了。更不提多少人对pico的用法就是一个很in的fancy factory。买椟还珠。 不过,既然开始了,让我还是有始有终吧。 这章还是让我们看看co的refactor。 其实,很多...转载 2018-06-15 23:52:30 · 737 阅读 · 0 评论 -
论面向组合子程序设计方法 之 微步毂纹生
最近。age0提出了一个OO设计的问题。因为这个例子更加贴近生活,是我们老百姓所喜闻乐见的商场折扣问题,所以我准备改铉更张用这个例子了。具体的例子请看: http://forum.iteye.com/viewtopic.php?t=17714&start=0 简要的说,需求是: 引用有这样一家超市,对顾客实行会员制,会员目前分为两个等级:金卡及银卡。 每次会员购物时,都会根据会员等级提供不...转载 2018-06-16 18:05:03 · 949 阅读 · 0 评论 -
23种设计模式(4):建造者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与...转载 2018-06-16 19:37:46 · 683 阅读 · 0 评论 -
《JAVA与模式》之建造模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述建造(Builder)模式的: 建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。产品的内部表象 一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常又叫做产品的内部表...转载 2018-06-16 19:38:34 · 763 阅读 · 0 评论 -
Java 设计模式 -- 建造者模式
建造者模式建造者模式就是一步一步的创建一个复杂的对象,而且允许用户指定复杂对象的类型和内容。Builder 类是一个抽象类,用于定义一些创建子部件的方法,Builder类中应该还有一个 getResult() 方法,用于将创建好的部件组装成一个产品返回。Director 类又称为指挥者,用于安排复杂对象的建造次序,通过construct() 方法,指导Builder类完成组装。通过一个例子来更好的...转载 2018-06-16 19:39:11 · 1332 阅读 · 0 评论 -
Java设计模式透析之 —— 策略(Strategy)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8986285今天你的leader兴致冲冲地找到你,希望你可以帮他一个小忙,他现在急着要去开会。要帮什么忙呢?你很好奇。他对你说,当前你们项目的数据库中有一张用户信息表,里面存放了很用户的数据,现在需要完成一个选择性查询用户信息的功能。他说会传递给你一个包含许多用户名的数组,你需要根据...转载 2018-06-17 15:14:57 · 1241 阅读 · 0 评论 -
Java设计模式(十二) 策略模式
策略模式介绍策略模式定义策略模式(Strategy Pattern),将各种算法封装到具体的类中,作为一个抽象策略类的子类,使得它们可以互换。客户端可以自行决定使用哪种算法。策略模式类图策略模式类图如下策略模式角色划分Strategy 策略接口或者(抽象策略类),定义策略执行接口ConcreteStrategy 具体策略类Context 上下文类,持有具体策略类的实例,并负责调用相关的算法策略模式...转载 2018-06-17 15:15:36 · 1335 阅读 · 0 评论 -
《JAVA与模式》之策略模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式的结构 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系...转载 2018-06-17 15:16:29 · 1377 阅读 · 0 评论 -
Java设计模式之代理模式(Proxy)
参考http://blog.csdn.net/jianghuxiaoxiami/article/details/34039241.代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代...转载 2018-06-17 18:47:04 · 1407 阅读 · 0 评论 -
论面向组合子程序设计方法 之 创世纪
发现老庄的连载方法很好.又能吸引眼球又能好整以暇.于是从善如流. 这几天在完善我的neptune系统和jaskell语言。顺手发现了一个logging的需求。如获至宝阿。 为什么呢?不是因为这个需求多么难,或者我的解决方法多么巧妙,而是因为,这个例子足够简单,直观,要说明它,背景知识几乎不大需要,三两句话大家就明白需要达到什么效果。这种例子可不是随便就想得到的。 而同时,它又对实现提出了一定程度的...转载 2018-06-15 23:46:50 · 1094 阅读 · 0 评论 -
代理模式及Java实现动态代理
代理模式定义:给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象。代理模式UML图在上图中:RealSubject 是原对象(本文把原对象称为"委托对象"),Proxy 是代理对象。Subject 是委托对象和代理对象都共同实现的接口。Request() 是委托对象和代理对象共同拥有的方法。要理解代理模式很简单,其实生活当中就存在...转载 2018-06-17 18:48:36 · 2231 阅读 · 0 评论 -
Java的三种代理模式
Java的三种代理模式参考:http://www.cnblogs.com/cenyu/...Java核心技术原书第九版6.5节为什么使用代理 我们在写一个功能函数时,经常需要在其中写入与功能不是直接相关但很有必要的代 码,如日志记录,信息发送,安全和事务支持等,这些枝节性代码虽然是必要的,但它会带来以下麻烦:枝节性代码游离在功能性代码之外,它不是函数的目的,这是对OO是一种破坏枝节性代码会造成功...转载 2018-06-17 18:49:16 · 2260 阅读 · 0 评论 -
说说 JAVA 代理模式
原文出处: 姜肇海 投稿事例小张是一个普普通通的码农,每天勤勤恳恳地码代码。某天中午小张刚要去吃饭,一个电话打到了他的手机上。“是XX公司的小张吗?我是YY公司的王AA”。“哦,是王总啊,有什么事情吗?”。沟通过后,小张弄明白了,原来客户有个需求,刚好负责这方面开发的是小张,客户就直接找到了他。不过小张却没有答应客户的请求,而是让客户找产品经理小李沟通。是小张着急去吃面而甩锅吗?并不是,只是为了使...转载 2018-06-17 18:49:57 · 2295 阅读 · 0 评论 -
《JAVA与模式》之适配器模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法...转载 2018-06-17 23:23:21 · 2203 阅读 · 0 评论 -
适配器模式
1. 适配器模式目录适配器模式模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结1.1. 模式动机在软件开发中采用类似于电源适配器的设计和编码技巧被称为适配器模式。通常情况下,客户端可以通过目标类的接口访问它所提供的服务。有时,现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因...转载 2018-06-18 12:50:37 · 2454 阅读 · 0 评论 -
适配器模式原理及实例介绍
系列内容:此内容是该系列 3 部分中的第 2 部分: Java编程设计模式适配器模式基本介绍著名的设计模式“四人帮”这样评价适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four适配器模式将一个类的接口适配成用户所期待的。一个适配器通常允许因为接口不兼容而不能一起工作的类能够在一起工作,做法...转载 2018-06-18 12:50:24 · 3569 阅读 · 0 评论 -
Java设计模式 - 适配器模式
概述将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。构造器模式上面的概述可能不是太容易理解,下面举一个例子说明适配器模式的应用。大家都知道,新款iPhone 7手机使用了扁口的Lightning接口耳机插槽,而旧款的3.5mm普通耳机是否就不能使用了呢?其实不然,iPhone 7配件中随机附赠了一个小玩意,可直接将普通3.5mm耳机转...转载 2018-06-18 12:50:02 · 2418 阅读 · 0 评论 -
设计模式学习----装饰器模式
这两天本来是自在学习java collection Framework的Fail Fast底层机制,看到核心的部分时,突然意识到设计模式的问题,上大学到现在我还没有真正理解过设计模式的概念,于是用了大半天好好的学习了一下装饰器模式,回头再看jdk的源码,舒服多了,的确验证了那句话,设计模式非学不可啊,可以说自己是个十足的菜鸟,连基本的java接口机制和继承都忘得差不多了,这一天全拾起来了~ ...转载 2018-06-18 15:13:51 · 2476 阅读 · 0 评论 -
(十)装饰器模式详解(与IO不解的情缘)
作者:zuoxiaolong8810(左潇龙),转载请注明出处。 LZ到目前已经写了九个设计模式,回过去看看,貌似写的有点凌乱,LZ后面会尽量改进。 那么本章LZ和各位读友讨论一个与JAVA中IO有着不解情缘的设计模式,装饰器模式。 定义:装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对...转载 2018-06-18 15:20:27 · 2421 阅读 · 0 评论 -
《JAVA与模式》之装饰模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。 ...转载 2018-06-18 15:21:09 · 2467 阅读 · 0 评论 -
《JAVA与模式》之状态模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。 状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一...转载 2018-06-19 22:24:14 · 3213 阅读 · 0 评论 -
JAVA 设计模式 : 状态模式
原文出处: 屌丝码农一、引出状态模式假设我们现在有一个糖果机项目,那么我们知道正常一般糖果机提供给用户的行为有这么几种:投入硬币、转动曲柄、退出硬币几种行为;那么糖果机呢一般有这几中状态,待机状态、持有硬币的准备状态、运行状态即正在售出状态和初始状态 这么几种正常状态。 我们发现处于不同状态的时候,持有的行为是不一样的,图如下:如果我们采用传统的方法来写代码,那么在投入硬币这个行为操作的时候,我们...转载 2018-06-19 22:25:31 · 2548 阅读 · 0 评论 -
JAVA设计模式(18):行为型-状态模式(State)
“人有悲欢离合,月有阴晴圆缺”,包括人在内,很多事物都具有多种状态,而且在不同状态下会具有不同的行为,这些状态在特定条件下还将发生相互转换。就像水,它可以凝固成冰,也可以受热蒸发后变成水蒸汽,水可以流动,冰可以雕刻,蒸汽可以扩散。我们可以用UML状态图来描述H2O的三种状态,如图1所示:图1 H2O的三种状态(未考虑临界点) 在软件系统中,有些对象也像水一样具有多种状态,这些状态在某...转载 2018-06-19 22:26:48 · 2613 阅读 · 0 评论 -
Java设计模式思维导图
from: https://www.cnblogs.com/icemoon1987/p/3349415.htmlhttps://blog.csdn.net/likewind1993/article/details/77843064https://www.aliyun.com/jiaocheng/33322.html转载 2019-01-13 22:08:45 · 1584 阅读 · 0 评论 -
谈谈MVC模式
1.如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。MVC模式就是架构模式的一种,它对我的启发特别大。我觉得它不仅适用于开发软件,也适用于其他广泛的设计和组织工作。下面是我对MVC模式的一些个人理解,不一定正确,主要用来整理思路。2.MVC是三个单词的首字母缩写,它们是Model(转载 2017-03-19 22:29:19 · 1165 阅读 · 0 评论 -
Java开发中的23种设计模式详解
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2016-08-31 22:59:38 · 8568 阅读 · 0 评论 -
我给媳妇解释设计模式:第一部分
引子我跟媳妇曾经就面向对象设计这个话题做过有趣的探讨。当我把它们发表在社区之后,得到了一些很不错的反馈,也大大鼓舞了我。所以,我很高兴能把我们后面的一次谈话继续分享出来,那是关于面向对象的设计模式的,大家往下看吧。AlfredCheung翻译于 4年前10人顶顶 翻译的不错哦!其它翻译版本(2)转载 2016-08-31 23:03:22 · 1297 阅读 · 0 评论 -
设计模式原则详解
我们在应用程序开发中,一般要求尽量两做到可维护性和可复用性。 应用程序的复用可以提高应用程序的开发效率和质量,节约开发成本,恰当的复用还可以改善系统的可维护性。而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。 面向对象设计原则和设计模式也是对系统进行合理重构的指导转载 2017-02-16 23:18:17 · 887 阅读 · 0 评论 -
《JAVA与模式》之简单工厂模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。那么简单工厂模式是在什么场景下使用呢,下面就以本人的理解举例说明: 就拿登录功能来说,假如应用系统需要支持多种登录方式如:口令认证、域认证(口令认证通常是去数据转载 2017-02-17 23:34:03 · 782 阅读 · 0 评论 -
《JAVA与模式》之工厂方法模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述工厂方法模式的: 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。 工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。那么工厂方法模式是在什么场景下使用呢,下面就以本人的理解举例说明:转载 2017-02-17 23:34:57 · 999 阅读 · 0 评论 -
《JAVA与模式》之抽象工厂模式
场景问题 举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如CPU、硬盘、内存、主板、电源、机箱等。为讨论使用简单点,只考虑选择CPU和主板的问题。 事实上,在选择CPU的时候,面临一系列的问题,比如品牌、型号、针脚数目、主频等问题,只有把这些问题都确定下来,才能确定具体的CPU。 同样,在选择主板的时候,也有一系列问题,比如品牌、转载 2017-02-17 23:35:49 · 813 阅读 · 0 评论 -
《JAVA与模式》之单例模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模式的: 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式的结构 单例模式的特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。 饿汉式单例类publi转载 2017-02-17 23:36:34 · 895 阅读 · 0 评论 -
《Head first设计模式》学习笔记 – 迭代器模式
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。爆炸性新闻:对象村餐厅和对象村煎饼屋合并了!真是个好消息!现在我们可以在同一个地方,享用煎饼屋美味的煎饼早餐,和好吃的餐厅午餐了。但是,好像有一点小麻烦:新的餐厅想用煎饼屋菜单当作早餐的菜单,使用餐厅的菜单当做午餐的菜单,大家都同意了这样实现菜单项。但是大家无法同意菜单的实现。煎饼屋使用ArrayLis转载 2017-02-09 23:28:21 · 1188 阅读 · 0 评论
分享