梦想破碎是没有声音的,它只是缓慢又沉默地离开了。 by 苏更生

 分类:设计模式

设计模式学习笔记 (1)

设计模式学习笔记 (1)
1.设计模式中类与类之间的6种关系 在面向对象的设计模式中,类与类之间主要有6种关系:依赖、关联、聚合、组合、继承、实现。 依赖:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。则称类A依赖类B。 关联:类A当中使用了类B,其中类B是作为类A...

Jay13 3年前 (2014-09-14) 6310℃ 1评论 28喜欢

《设计模式》系列教程——一览众山小

《设计模式》系列教程——一览众山小
设计模式系列教程 目录 设计模式基础教程 设计模式中类的关系 依赖、关联、聚合和组合之间区别 设计模式的六大原则 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原...

Jay13 3年前 (2014-08-11) 4529℃ 1评论 9喜欢

恼人的设计模式

最近参加面试,总是被问到设计模式的问题。本人作为一个实用派,完全没搞懂作为一个功能的实现者,设计模式到底有多重要。当然,本人的意思不是说设计模式没用或者不该了解,但是这是一个度的问题,简单的模式,常用的模式,了解并会用,是必然的,但是其他模式,更深层的东西,也许留给架构师来理解更...

Jay13 3年前 (2014-06-05) 2542℃ 0评论 7喜欢

换种思路去理解设计模式(下)

换种思路去理解设计模式(上) 换种思路去理解设计模式(中) 换种思路去理解设计模式(下) 8       对象行为与操作对象 8.1     过程描述 所谓对象行为和操作对象,需要三方面内容: l  操作过程: 一般表现为一个方法。该方法接收一个对象或者组合类型的参数,然后对这个...

Jay13 3年前 (2014-06-04) 2963℃ 3评论 7喜欢

换种思路去理解设计模式(中)

换种思路去理解设计模式(上) 换种思路去理解设计模式(中) 换种思路去理解设计模式(下) 7   多个对象组成结构 7.1     过程描述 上一节介绍了如何创建一个对象。但大多数情况,一个对象是不够用的,这时候就需要把对象包装、封装、多对象组合。有时候还需要将一个组合作为一个整...

Jay13 3年前 (2014-06-04) 2519℃ 0评论 2喜欢

换种思路去理解设计模式(上)

换种思路去理解设计模式(上) 换种思路去理解设计模式(中) 换种思路去理解设计模式(下) 1 前言 看过许多关于设计模式的博客,也读过关于设计模式的书。几乎所有的介绍的开头,直接就引入了“设计模式”或者“某某模式”。设计模式到底是因什么而来?这是一个很重要的问题。孙悟空从石头缝里...

Jay13 3年前 (2014-06-04) 3608℃ 1评论 7喜欢

23种设计模式(15):备忘录模式

定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态 类型:行为类 类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(...

Jay13 3年前 (2014-06-04) 2013℃ 0评论 4喜欢

23种设计模式(14):解释器模式

定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。 类型:行为类模式 类图: 解释器模式是一个比较少用的模式,本人之前也没有用过这个模式。下面我们就来一起看一下解释器模式。   解释器模式的结构 抽象解释器:声明一个所...

Jay13 3年前 (2014-06-04) 2034℃ 0评论 3喜欢

23种设计模式(13):迭代器模式

定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 类型:行为类模式 类图: 如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧: public stat...

Jay13 3年前 (2014-06-04) 2065℃ 0评论 5喜欢

23种设计模式(12):策略模式

定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。 类型:行为类模式 类图: 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。在前面说过的行为类模式中,有一种模式也是关注对算法的封装——模版方法模式,对照类...

Jay13 3年前 (2014-06-04) 1870℃ 0评论 6喜欢

23种设计模式(11):责任连模式

定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 类型:行为类模式 类图: 首先来看一段代码: public void test(int i, Re...

Jay13 3年前 (2014-06-04) 1531℃ 0评论 7喜欢

23种设计模式(10):命令模式

定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 类型:行为类模式 类图: 命令模式的结构 顾名思义,命令模式就是对命令的封装,首先来看一下命令模式类图中的基本结构: Command类:是一个抽象...

Jay13 3年前 (2014-06-04) 1887℃ 0评论 6喜欢

23种设计模式(9):访问者模式

定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 类型:行为类模式 类图: 访问者模式可能是行为类模式中最复杂的一种模式了,但是这不能成为我们不去掌握它的理由。我们首先来看一个简单的例子,代码如下: ...

Jay13 3年前 (2014-06-04) 1698℃ 0评论 1喜欢

23种设计模式(8):观察者模式

定义:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。 类型:行为类模式 类图: 在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要...

Jay13 3年前 (2014-06-04) 1973℃ 0评论 3喜欢

23种设计模式(7):中介者模式

定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 类型:行为类模式 类图: 中介者模式的结构 中介者模式又称为调停者模式,从类图中看,共分为3部分:  抽象中介者:定义好同事类对象到中介者对象的...

Jay13 3年前 (2014-06-04) 1649℃ 0评论 3喜欢

23种设计模式(6):模版方法模式

定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。 类型:行为类模式 类图: 事实上,模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序...

Jay13 3年前 (2014-06-04) 1780℃ 0评论 3喜欢

23种设计模式(5):原型模式

定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型:创建类模式 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件: 实现Cloneable接口。在java语言有一个Clonea...

Jay13 3年前 (2014-05-25) 1705℃ 0评论 5喜欢

23种设计模式(4):建造者模式

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类型:创建类模式 类图: 四个要素 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以...

Jay13 3年前 (2014-05-25) 1722℃ 0评论 0喜欢

23种设计模式(3):抽象工厂模式

定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 类型:创建类模式 类图: 抽象工厂模式与工厂方法模式的区别         抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的...

Jay13 3年前 (2014-05-25) 2114℃ 0评论 4喜欢

23种设计模式(2):工厂方法模式

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 类型:创建类模式 类图: 工厂方法模式代码 interface IProduct { public void productMethod();...

Jay13 3年前 (2014-05-25) 2211℃ 0评论 3喜欢

23种设计模式(1):单例模式

定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 类型:创建类模式 类图: 类图知识点: 1.类图分为三部分,依次是类名、属性、方法 2.以<<开头和以>>结尾的为注释信息 3.修饰符+代表public,-代表private,#代表...

Jay13 3年前 (2014-05-25) 2752℃ 0评论 3喜欢

设计模式六大原则(6):开闭原则

遵循开闭原则设计出的模块具有两个主要特征: 对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。 对于修改是关闭的(Closed f...

Jay13 3年前 (2014-05-25) 2094℃ 0评论 2喜欢

设计模式六大原则(5):迪米特法则

迪米特法则: 迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD. 定义:一个对象应该对其他对象保持最少的了解。 问题由...

Jay13 3年前 (2014-05-25) 2355℃ 0评论 0喜欢

设计模式六大原则(4):接口隔离原则

接口隔离原则: 使用多个专门的接口比使用单一的总接口要好。 一个类对另外一个类的依赖性应当是建立在最小的接口上的。 一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。 “不应该强迫客户依赖于它们不用的...

Jay13 3年前 (2014-05-25) 2264℃ 0评论 4喜欢

设计模式六大原则(3):依赖倒置原则

依赖倒置原则: A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。 B.抽象不应该依赖于具体,具体应该依赖于抽象。 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类...

Jay13 3年前 (2014-05-25) 2093℃ 0评论 2喜欢

设计模式六大原则(2):里氏替换原则

      肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。 定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T...

Jay13 3年前 (2014-05-25) 2315℃ 0评论 2喜欢

设计模式六大原则(1):单一职责原则

定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建立两个类T1、T2,使...

Jay13 3年前 (2014-05-25) 2931℃ 0评论 4喜欢

设计模式的六大原则

在运用面向对象的思想进行软件设计时,需要遵循的六大原则: 1.  单一职责原则(Single Responsibility Principle) 2.  里氏替换原则(Liskov Substitution Principle) 3.  依赖倒置原则(Dependence Inv...

Jay13 3年前 (2014-05-25) 2303℃ 0评论 5喜欢

依赖、关联、聚合和组合之间区别

在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。他们在编程语言中的体现却是基本相同的,但是基本相同并不等于完全相同,这一点在我的前一篇博文《设计模式中类的关系》中已经有...

Jay13 3年前 (2014-05-25) 2982℃ 0评论 1喜欢

设计模式中类的关系

在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。 1. 依赖(Dependence)          依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖...

Jay13 3年前 (2014-05-25) 3426℃ 0评论 7喜欢