设计模式
文章平均质量分 92
GarfieldEr007
这个作者很懒,什么都没留下…
展开
-
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 · 1498 阅读 · 0 评论 -
《JAVA与模式》之策略模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式的结构 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系...转载 2018-06-17 15:16:29 · 1305 阅读 · 0 评论 -
Java设计模式(十二) 策略模式
策略模式介绍策略模式定义策略模式(Strategy Pattern),将各种算法封装到具体的类中,作为一个抽象策略类的子类,使得它们可以互换。客户端可以自行决定使用哪种算法。策略模式类图策略模式类图如下策略模式角色划分Strategy 策略接口或者(抽象策略类),定义策略执行接口ConcreteStrategy 具体策略类Context 上下文类,持有具体策略类的实例,并负责调用相关的算法策略模式...转载 2018-06-17 15:15:36 · 1251 阅读 · 0 评论 -
Java设计模式透析之 —— 策略(Strategy)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8986285今天你的leader兴致冲冲地找到你,希望你可以帮他一个小忙,他现在急着要去开会。要帮什么忙呢?你很好奇。他对你说,当前你们项目的数据库中有一张用户信息表,里面存放了很用户的数据,现在需要完成一个选择性查询用户信息的功能。他说会传递给你一个包含许多用户名的数组,你需要根据...转载 2018-06-17 15:14:57 · 1146 阅读 · 0 评论 -
Java 设计模式 -- 建造者模式
建造者模式建造者模式就是一步一步的创建一个复杂的对象,而且允许用户指定复杂对象的类型和内容。Builder 类是一个抽象类,用于定义一些创建子部件的方法,Builder类中应该还有一个 getResult() 方法,用于将创建好的部件组装成一个产品返回。Director 类又称为指挥者,用于安排复杂对象的建造次序,通过construct() 方法,指导Builder类完成组装。通过一个例子来更好的...转载 2018-06-16 19:39:11 · 1236 阅读 · 0 评论 -
《JAVA与模式》之建造模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述建造(Builder)模式的: 建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。产品的内部表象 一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常又叫做产品的内部表...转载 2018-06-16 19:38:34 · 679 阅读 · 0 评论 -
23种设计模式(4):建造者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与...转载 2018-06-16 19:37:46 · 617 阅读 · 0 评论 -
论面向组合子程序设计方法 之 微步毂纹生
最近。age0提出了一个OO设计的问题。因为这个例子更加贴近生活,是我们老百姓所喜闻乐见的商场折扣问题,所以我准备改铉更张用这个例子了。具体的例子请看: http://forum.iteye.com/viewtopic.php?t=17714&start=0 简要的说,需求是: 引用有这样一家超市,对顾客实行会员制,会员目前分为两个等级:金卡及银卡。 每次会员购物时,都会根据会员等级提供不...转载 2018-06-16 18:05:03 · 834 阅读 · 0 评论 -
论面向组合子程序设计方法 之 重构2
已经有点感觉用ioc container来说明co不见得是个好主意了。 这个container的例子举出来,明显提出意见的人比那个简单的logging例子少了很多。 毕竟连pico是怎么回事,怎么用,很多人都还不见得了了。更不提多少人对pico的用法就是一个很in的fancy factory。买椟还珠。 不过,既然开始了,让我还是有始有终吧。 这章还是让我们看看co的refactor。 其实,很多...转载 2018-06-15 23:52:30 · 646 阅读 · 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 · 722 阅读 · 0 评论 -
论面向组合子程序设计方法 之 重构
迄今,发现典型的几种疑问是: 1。组合子的设计要求正交,要求最基本,这是不是太难达到呢? 2。面对一些现实中更复杂的需求,组合子怎样scale up呢? 其实,这两者都指向一个答案:重构。 要设计一个完全正交,原子到不可再分的组合子,也许不是总是那么容易。但是,我们并不需要一开始就设计出来完美的组合子设计。 比如,我前面的logging例子,TimestampLogger负责给在一行的开头打印当前...转载 2018-06-15 23:51:06 · 933 阅读 · 0 评论 -
论面向组合子程序设计方法 之 oracle
不少朋友说我的阐述很苍白无力。这让我很苦恼。我确实是拚了命地想把问题说清楚,我也有实际non-trivial的项目经验,怎么就说不明白呢?哎! 所以,还是不能不多罗嗦一下,希望能够再阐述得明白一点。 其实,所谓co,有心的朋友也许能够感觉到,它很象是设计一门语言。 它有顺序/分支,有函数调用,异常处理,基本上一个程序设计语言有的东西它都有了。这些顺序/分支作为语言的基础设施,而一些应对具体需求的原...转载 2018-06-15 23:50:14 · 638 阅读 · 0 评论 -
面向组合子程序设计方法 之 新约
每个小孩刚开始走路的时候都是跌跌撞撞的。 我们不自量力,妄图踩着上帝的步伐前进。结果就是这么几个简单的象白开水似的类。失望吗?是不是造物试图模仿造物主本身就是一种可笑的狂妄呢? 别急,让我们失声痛哭之前先看看我们这几步走的是不是一钱不值。 [list] 1。logger可以把信息打印到log文件中。 容易,直接创建一个WriterLogger就好了。 2。不同的重要程度的信息也许可以打印到不同的文...转载 2018-06-15 23:49:28 · 667 阅读 · 0 评论 -
论面向组合子程序设计方法 之 燃烧的荆棘
唧唧歪歪一大堆。肯定早有人不耐烦了。 "你丫还有没有点实在的东西呀?" 要是我,可能也早就忍不住了。 好,好。我其实并没有忘记前面说的那个logging的例子。卖了这么长时间的关子,除了有想形而上的虚荣心外,也是想给大家多一点时间来嚼一下这个例子,让熟悉OO的朋友肚子里面多少有个腹稿。 下面,我来继续上回书说到的这个logging。 前面列举了那么一大堆乱七八糟的需求,不知道是不是有人和我一样看着...转载 2018-06-15 23:48:41 · 640 阅读 · 0 评论 -
Java设计模式之代理模式(Proxy)
参考http://blog.csdn.net/jianghuxiaoxiami/article/details/34039241.代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代...转载 2018-06-17 18:47:04 · 1319 阅读 · 0 评论 -
Java设计模式之代理模式
代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。为什么要采用这种间接的形式来调用对象呢?一般是因为客户端不想直接访问实际的对象,或者访问实际的对象存在困难,因此通过一个代理对象来完成间接的访问。在现实生活中,这种情形非常的常见,比如请一个律师代理来打官司。下面例子的代码可以访问源码。欢迎star,欢迎fork代理模式的U...转载 2018-06-17 18:47:45 · 1426 阅读 · 0 评论 -
代理模式及Java实现动态代理
代理模式定义:给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象。代理模式UML图在上图中:RealSubject 是原对象(本文把原对象称为"委托对象"),Proxy 是代理对象。Subject 是委托对象和代理对象都共同实现的接口。Request() 是委托对象和代理对象共同拥有的方法。要理解代理模式很简单,其实生活当中就存在...转载 2018-06-17 18:48:36 · 2159 阅读 · 0 评论 -
JAVA设计模式(18):行为型-状态模式(State)
“人有悲欢离合,月有阴晴圆缺”,包括人在内,很多事物都具有多种状态,而且在不同状态下会具有不同的行为,这些状态在特定条件下还将发生相互转换。就像水,它可以凝固成冰,也可以受热蒸发后变成水蒸汽,水可以流动,冰可以雕刻,蒸汽可以扩散。我们可以用UML状态图来描述H2O的三种状态,如图1所示:图1 H2O的三种状态(未考虑临界点) 在软件系统中,有些对象也像水一样具有多种状态,这些状态在某...转载 2018-06-19 22:26:48 · 2485 阅读 · 0 评论 -
JAVA 设计模式 : 状态模式
原文出处: 屌丝码农一、引出状态模式假设我们现在有一个糖果机项目,那么我们知道正常一般糖果机提供给用户的行为有这么几种:投入硬币、转动曲柄、退出硬币几种行为;那么糖果机呢一般有这几中状态,待机状态、持有硬币的准备状态、运行状态即正在售出状态和初始状态 这么几种正常状态。 我们发现处于不同状态的时候,持有的行为是不一样的,图如下:如果我们采用传统的方法来写代码,那么在投入硬币这个行为操作的时候,我们...转载 2018-06-19 22:25:31 · 2431 阅读 · 0 评论 -
《JAVA与模式》之状态模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。 状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一...转载 2018-06-19 22:24:14 · 3109 阅读 · 0 评论 -
《JAVA与模式》之装饰模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。 ...转载 2018-06-18 15:21:09 · 2397 阅读 · 0 评论 -
(十)装饰器模式详解(与IO不解的情缘)
作者:zuoxiaolong8810(左潇龙),转载请注明出处。 LZ到目前已经写了九个设计模式,回过去看看,貌似写的有点凌乱,LZ后面会尽量改进。 那么本章LZ和各位读友讨论一个与JAVA中IO有着不解情缘的设计模式,装饰器模式。 定义:装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对...转载 2018-06-18 15:20:27 · 2335 阅读 · 0 评论 -
设计模式学习----装饰器模式
这两天本来是自在学习java collection Framework的Fail Fast底层机制,看到核心的部分时,突然意识到设计模式的问题,上大学到现在我还没有真正理解过设计模式的概念,于是用了大半天好好的学习了一下装饰器模式,回头再看jdk的源码,舒服多了,的确验证了那句话,设计模式非学不可啊,可以说自己是个十足的菜鸟,连基本的java接口机制和继承都忘得差不多了,这一天全拾起来了~ ...转载 2018-06-18 15:13:51 · 2353 阅读 · 0 评论 -
Java设计模式 - 适配器模式
概述将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。构造器模式上面的概述可能不是太容易理解,下面举一个例子说明适配器模式的应用。大家都知道,新款iPhone 7手机使用了扁口的Lightning接口耳机插槽,而旧款的3.5mm普通耳机是否就不能使用了呢?其实不然,iPhone 7配件中随机附赠了一个小玩意,可直接将普通3.5mm耳机转...转载 2018-06-18 12:50:02 · 2304 阅读 · 0 评论 -
适配器模式原理及实例介绍
系列内容:此内容是该系列 3 部分中的第 2 部分: Java编程设计模式适配器模式基本介绍著名的设计模式“四人帮”这样评价适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four适配器模式将一个类的接口适配成用户所期待的。一个适配器通常允许因为接口不兼容而不能一起工作的类能够在一起工作,做法...转载 2018-06-18 12:50:24 · 3472 阅读 · 0 评论 -
适配器模式
1. 适配器模式目录适配器模式模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结1.1. 模式动机在软件开发中采用类似于电源适配器的设计和编码技巧被称为适配器模式。通常情况下,客户端可以通过目标类的接口访问它所提供的服务。有时,现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因...转载 2018-06-18 12:50:37 · 2366 阅读 · 0 评论 -
《JAVA与模式》之适配器模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法...转载 2018-06-17 23:23:21 · 2137 阅读 · 0 评论 -
说说 JAVA 代理模式
原文出处: 姜肇海 投稿事例小张是一个普普通通的码农,每天勤勤恳恳地码代码。某天中午小张刚要去吃饭,一个电话打到了他的手机上。“是XX公司的小张吗?我是YY公司的王AA”。“哦,是王总啊,有什么事情吗?”。沟通过后,小张弄明白了,原来客户有个需求,刚好负责这方面开发的是小张,客户就直接找到了他。不过小张却没有答应客户的请求,而是让客户找产品经理小李沟通。是小张着急去吃面而甩锅吗?并不是,只是为了使...转载 2018-06-17 18:49:57 · 2191 阅读 · 0 评论 -
Java的三种代理模式
Java的三种代理模式参考:http://www.cnblogs.com/cenyu/...Java核心技术原书第九版6.5节为什么使用代理 我们在写一个功能函数时,经常需要在其中写入与功能不是直接相关但很有必要的代 码,如日志记录,信息发送,安全和事务支持等,这些枝节性代码虽然是必要的,但它会带来以下麻烦:枝节性代码游离在功能性代码之外,它不是函数的目的,这是对OO是一种破坏枝节性代码会造成功...转载 2018-06-17 18:49:16 · 2184 阅读 · 0 评论 -
论面向组合子程序设计方法 之 失乐园 之补充
失乐园发了之后。有的朋友对“OO是一种自顶向下的方法论”的论述有些疑问。 这里补充一下。 如果认可OO是一个责任分配体系,那么自顶向下就是一个自然的逻辑结论。 没有分析出来“需求”,也就无所谓“责任”,于是根本就无所谓“OO”了。 这种从分析需求,分解需求,分配责任,再分析子需求,分解子需求,在子模块内分配责任的方式,被我称为“自顶向下”。 至于说xp, tdd和自顶向下是不矛盾的。它们也都是要依...转载 2018-06-15 23:47:47 · 736 阅读 · 0 评论 -
论面向组合子程序设计方法 之 创世纪
发现老庄的连载方法很好.又能吸引眼球又能好整以暇.于是从善如流. 这几天在完善我的neptune系统和jaskell语言。顺手发现了一个logging的需求。如获至宝阿。 为什么呢?不是因为这个需求多么难,或者我的解决方法多么巧妙,而是因为,这个例子足够简单,直观,要说明它,背景知识几乎不大需要,三两句话大家就明白需要达到什么效果。这种例子可不是随便就想得到的。 而同时,它又对实现提出了一定程度的...转载 2018-06-15 23:46:50 · 986 阅读 · 0 评论 -
java中的工厂模式
一、工厂模式介绍工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式的几种形态:(1)简单工厂(Simple Factory)模式,又称静态工厂方法模式(Static Factory Method Pattern)。(2)工厂方法(Factory Method)模式,又称多态性工厂(Polymorphic Factory)模式...转载 2018-06-15 21:55:27 · 872 阅读 · 0 评论 -
浅谈iOS中MVVM的架构设计与团队协作
今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正。本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦~)。由于本人项目经验有限,关于架构设计方面的东西理解有限,我个人对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架~在学校的时候用过ThinkPHP框架,和SSH框架,都是MVC的架转载 2017-03-17 23:14:38 · 858 阅读 · 0 评论 -
被误解的MVC和被神化的MVVM
被误解的 MVCMVC 的历史MVC,全称是 Model View Controller,是模型 (model)-视图 (view)-控制器 (controller) 的缩写。它表示的是一种常见的客户端软件开发框架。MVC 的概念最早出现在二十世纪八十年代的 施乐帕克 实验室中(对,就是那个发明图形用户界面和鼠标的实验室),当时施乐帕克为 Smalltalk 发明了转载 2017-03-17 23:13:32 · 981 阅读 · 0 评论 -
MVC,MVP 和 MVVM 的图示
作者: 阮一峰日期: 2015年2月 1日复杂的软件必须有清晰合理的架构,否则无法开发和维护。MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。昨天晚上,我读了《Scaling Isomorphic Javascript C转载 2017-03-17 23:12:11 · 765 阅读 · 0 评论 -
设计模式(一)工厂模式Factory(创建型)
设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在转载 2017-02-15 23:00:21 · 740 阅读 · 0 评论 -
《Head first设计模式》学习笔记 – 迭代器模式
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。爆炸性新闻:对象村餐厅和对象村煎饼屋合并了!真是个好消息!现在我们可以在同一个地方,享用煎饼屋美味的煎饼早餐,和好吃的餐厅午餐了。但是,好像有一点小麻烦:新的餐厅想用煎饼屋菜单当作早餐的菜单,使用餐厅的菜单当做午餐的菜单,大家都同意了这样实现菜单项。但是大家无法同意菜单的实现。煎饼屋使用ArrayLis转载 2017-02-09 23:28:21 · 1062 阅读 · 0 评论 -
《JAVA与模式》之单例模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模式的: 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式的结构 单例模式的特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。 饿汉式单例类publi转载 2017-02-17 23:36:34 · 809 阅读 · 0 评论 -
《JAVA与模式》之抽象工厂模式
场景问题 举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如CPU、硬盘、内存、主板、电源、机箱等。为讨论使用简单点,只考虑选择CPU和主板的问题。 事实上,在选择CPU的时候,面临一系列的问题,比如品牌、型号、针脚数目、主频等问题,只有把这些问题都确定下来,才能确定具体的CPU。 同样,在选择主板的时候,也有一系列问题,比如品牌、转载 2017-02-17 23:35:49 · 732 阅读 · 0 评论 -
《JAVA与模式》之工厂方法模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述工厂方法模式的: 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。 工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。那么工厂方法模式是在什么场景下使用呢,下面就以本人的理解举例说明:转载 2017-02-17 23:34:57 · 918 阅读 · 0 评论