![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 79
xiaoquanhuang
这个作者很懒,什么都没留下…
展开
-
命令模式
<br />1 场景问题 1.1 如何开机<br />计有些朋友看到这个标题会非常奇怪,电脑装配好了,如何开机?不就是按下启动按钮就可以了吗?难道还有什么玄机不成。<br />对于使用电脑的客户——就是我们来说,开机确实很简单,按下启动按钮,然后耐心等待就可以了。但是当我们按下启动按钮过后呢?谁来处理?如何处理?都经历了怎样的过程,才让电脑真正的启动起来,供我们使用。<br />先一起来简单的认识一下电脑的启动过程,了解一下即可。当我们按下启动按钮,电源开始向主板和其它设备供电主板的系统BIOS(基本输转载 2011-04-08 08:52:00 · 454 阅读 · 0 评论 -
抽象和封装
<br />关键字: 抽象和封装二.抽象和封装 <br />整理自 《java与模式》阎宏编著 <br /><br />1.关于抽象类 <br /> 只要有可能,不要从具体类继承。 <br /> <br /> 如图,在一个以继承关系形成的等级结构里面,树叶节点应该是具体类,而树枝节点应该是抽象类或接口。 <br /> 抽象类应该拥有尽可能多的共同代码。 <br /> <br /> 抽象类应该拥有尽可能少的数据。 <br /> <br /> 在一个继承的等转载 2011-04-09 10:54:00 · 2638 阅读 · 0 评论 -
面向对象设计原则
<br />关键字: 面向对象设计原则一.面向对象设计原则: <br />整理自 <br />《java与模式》阎宏编著 <br />《敏捷软件开发原则、模式与实践》 Robert C.Martin著 邓辉 译 <br /><br />1.单一职责原则(SRP) <br /> 一个类只能承担一个职责,即就一个类而言,应该仅有一个引起它变化的原因。因为每一个职责都是变化的一个轴线,当需求变化时,该变化会表现为类的职责的变化。如果一个类承担了多于一个的职责时,那么引起它变化的原因就有多个。 <br />2转载 2011-04-09 10:39:00 · 681 阅读 · 0 评论 -
访问者模式
<br />1.意图: <br /><br /> 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 <br /><br />2.类图: <br /><br /> <br /><br />3.原理: <br /><br />4.特征: <br /><br /> 抽象访问者(Visitor)角色:定义接口,声明一个或多个访问操作。 <br /><br /> 具体访问者(ConcreteVisitor)角色:实现抽象访问者所声明转载 2011-04-09 10:13:00 · 5632 阅读 · 2 评论 -
备忘录模式
<br />1.意图: <br /><br /> 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。 <br /><br />2.类图: <br /><br /> <br /><br />3.原理: <br /><br />4.特征: <br /><br /> 备忘录(Memento)角色: <br /><br /> 备忘录(Memento)角色的职责:转载 2011-04-09 09:41:00 · 708 阅读 · 0 评论 -
调停者模式
<br />1.意图: <br /><br /> 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 <br /><br />2.类图: <br /><br /> <br /><br />3.原理: <br /><br />4.特征: <br /><br /> 系统中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做同事(Colleague)对象。 <br /><br /> 抽象调停转载 2011-04-09 09:26:00 · 1743 阅读 · 0 评论 -
工厂方法模式
<br />1 场景问题1.1 导出数据的应用框架<br />考虑这样一个实际应用:实现一个导出数据的应用框架,来让客户选择数据的导出方式,并真正执行数据导出。<br />在一些实际的企业应用中,一个公司的系统往往分散在很多个不同的地方运行,比如各个分公司或者是门市点,公司没有建立全公司专网的实力,但是又不愿意让业务数据实时的在广域网上传递,一个是考虑数据安全的问题,一个是运行速度的问题。<br />这种系统通常会有一个折中的方案,那就是各个分公司内运行系统的时候是独立的,是在自己分公司的局域网内运行。转载 2011-04-08 19:45:00 · 3982 阅读 · 1 评论 -
鸭子-策略模式(Strategy)
<br /><br />模拟鸭子<br />Joe是一名OO程序员,他为一家开发模拟鸭子池塘游戏的公司工作,该公司的主要产品是一种可以模拟展示多种会游泳和呷呷叫的鸭子的游戏。这个游戏是使用标准的面向对象技术开发的,系统里所有鸭子都继承于Duck基类,系统的核心类图如下:<br /><br />如图所示,在Duck基类里实现了公共的quack()和swim()方法,而MallardDuck和RedheadDuck可以分别覆盖实现自己的display()方法,这样即重用了公共的部分,又支持不同子类的个性化扩展。转载 2011-04-08 09:25:00 · 572 阅读 · 0 评论 -
命令模式
<br />1 场景问题 1.1 如何开机<br />计有些朋友看到这个标题会非常奇怪,电脑装配好了,如何开机?不就是按下启动按钮就可以了吗?难道还有什么玄机不成。<br />对于使用电脑的客户——就是我们来说,开机确实很简单,按下启动按钮,然后耐心等待就可以了。但是当我们按下启动按钮过后呢?谁来处理?如何处理?都经历了怎样的过程,才让电脑真正的启动起来,供我们使用。<br />先一起来简单的认识一下电脑的启动过程,了解一下即可。当我们按下启动按钮,电源开始向主板和其它设备供电主板的系统BIOS(基本输转载 2011-04-08 08:53:00 · 681 阅读 · 0 评论 -
Facade(外观)模式
设计模式精解笔记 -- 提供代码和类图<br /> 设计模式精解读书笔记,学习书籍的同时,按着自己的理解编写代码和类图。有误之处请网友指出,thanks。 <br />一、 Facade(外观)模式<br />为了子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。<br /><br /><br />Façade模式:关键特征<br />意图<br />希望简化现有系统的使用方法。你需要定义自己的接口<br />问题<br />只需要转载 2011-04-07 20:22:00 · 441 阅读 · 0 评论 -
Builder模式
<br />Builder模式定义:<br />将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.<br />Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到.<br />为何使用?<br />是为了将构建复杂对象的过程和它的部件解耦.注意: 是解耦过程和部件.<br />因为一个复杂的对象,不但有很多大量组成部分转载 2011-04-08 19:54:00 · 583 阅读 · 0 评论 -
装饰者模式 java代码小示例
<br /><br />1、定义及作用<br />该模式以对客户端透明的方式扩展对象的功能。<br />2、涉及角色<br />抽象构件角色:定义一个抽象接口,来规范准备附加功能的类。<br />具体构件角色:将要被附加功能的类,实现抽象构件角色接口。<br />抽象装饰者角色:持有对具体构件角色的引用并定义与抽象构件角色一致的接口。<br />具体装饰角色:实现抽象装饰者角色,负责为具体构件添加额外功能。<br />3、简单实现抽象构件角色java 代码package decorator; /**转载 2011-04-08 20:07:00 · 4274 阅读 · 0 评论 -
鸭子-策略模式(Strategy)
<br /><br />模拟鸭子<br />Joe是一名OO程序员,他为一家开发模拟鸭子池塘游戏的公司工作,该公司的主要产品是一种可以模拟展示多种会游泳和呷呷叫的鸭子的游戏。这个游戏是使用标准的面向对象技术开发的,系统里所有鸭子都继承于Duck基类,系统的核心类图如下:<br /><br />如图所示,在Duck基类里实现了公共的quack()和swim()方法,而MallardDuck和RedheadDuck可以分别覆盖实现自己的display()方法,这样即重用了公共的部分,又支持不同子类的个性化扩展。转载 2011-04-08 09:25:00 · 559 阅读 · 0 评论 -
UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
关键字: uml中的关联UML 中的关联 ——学习笔记xmlinUML 中类与类, 类与接口, 接口与接口这间的关系有: 一般化关系, 关联关系( 关联, 聚合, 合成), 依赖关系. 一般化关系: 表示类与类之间的继承关系, 类与接口之间的实现关系, 接口与接口之间的继承关系. 在java 中表现为extends 或implements 关联关系: 表示类与类之间的联接, 它使一个类知道另一个类的属性和方法. 在java 语言中关联关系是使用实例变量实现的. 关联可以使用单箭头表示单向关联, 使用双箭头或转载 2011-04-09 11:04:00 · 911 阅读 · 0 评论