
设计模式
文章平均质量分 85
Hsienhua
这个作者很懒,什么都没留下…
展开
-
java模式笔记之6大设计原则
1.概述6大设计原则:1)开-闭原则(open-close OCP)2)里氏代换原则(LSP)3)依赖倒转原则(DIP)4)接口隔离原则(ISP)5)组合聚合复用原则(CARP)6)迪米特原则(LOD)遵循这些设计原则可以有效的提高系统的可复用性,同时提高可维护性.2.开闭原则(OCP)含义:一个软件实体应该对扩展开发,对修改关闭。这个原则是说设原创 2013-07-30 11:29:27 · 831 阅读 · 0 评论 -
Java设计模式笔记之桥梁模式
1.桥梁模式桥梁模式是对象的结构模式。用意是:将抽象化与实现化脱耦,使得二者可以独立地变化。抽象化是指对对于多个实体抽象出普遍的共性,可以把不同实体当做同样的实体对待。Java中一般接口或者抽象类来表示这种抽象实体。实现化,针对抽象化实体的具体实现。这里的脱耦是指,将强关联的继承关系变为弱关联的聚合关系。继承关系在编译器就固定了结构,不如聚合灵活。例如2.桥梁模式的结构结构原创 2013-08-29 17:02:57 · 787 阅读 · 1 评论 -
Java设计模式笔记之策略模式
1.策略模式策略模式是对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。2.策略模式的结构参与角色:Context:环境角色,持有一个引用,并给客户端提供一个方法,调用策略。Strategy:抽象策略角色,定义所有策略算法的公共接口,给Context调用原创 2013-08-31 15:09:52 · 733 阅读 · 0 评论 -
Java与设计模式笔记之模板方法模式
1.模板方法模式模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。2.模板方法模式模板方法模式的结构更多的是体现在方法上,类结构很简单。参与角色:AbstractClass抽象模板,责任由2个定义原创 2013-08-31 16:59:28 · 826 阅读 · 0 评论 -
Java设计模式笔记之迭代器模式
1.迭代器模式迭代器(子)模式(Iterator)又叫游标模式,是对象的行为模式。迭代器模式可以顺序的访问一个聚集中的元素,而不用暴露聚集的内部表象。2.为什么需要迭代器模式一个聚集持有多个对象,就需要对客户端提供遍历对象的方法,使用过程会出现以下问题:(1)迭代逻辑没有改变,但是需要将一种聚集换成另一种聚集。(2)聚集没有改变,但是迭代方式需要改变,例如新增可以删除元素的功能原创 2013-09-09 21:45:03 · 879 阅读 · 1 评论 -
Java设计模式笔记之观察者模式
1.观察者模式观察者模式是对象的行为那模式,又叫发布-订阅(Publish/Subcrible)模式,模型-视图(Model/View)模式、源-监听器模式或从属者模式。观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知多有观察者对象,使它们自动更新。2.观察者模式的结构参与角色:Subjec原创 2013-09-03 17:14:47 · 792 阅读 · 0 评论 -
Java设计模式笔记之责任链模式
1.责任链模式责任链模式是对象的行为模式。在责任链模式中,每个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象处理这个请求。客户端并直到链上的哪一个对象处理这个请求,使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。2.责任链模式的结构结构类图如下:责任链模式涉及到的角色如下所示: ● 抽象处理者(原创 2013-09-10 21:10:14 · 601 阅读 · 0 评论 -
Java设计模式:命令模式
1.命令模式命令模式(Command)属于对象的行为模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。2.命令模式的类图参与的角色:Client:客户角色,创建了一个具体命令(ConcreteCommand)对象并确定其接收者。Command:命令角色:原创 2013-09-14 10:24:41 · 605 阅读 · 0 评论 -
Java设计模式:备忘录模式
1.备忘录模式备忘录模式又叫(Memento)是对象的行为模式。备忘录对象(Memento)对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉,并外部化,存储起来,从而可以在合适的时候把这个对象还原到存储起来的状态。2.备忘录模式的结构备忘模式的总体结构:参与模式的角色:备忘录角色(Mem原创 2013-09-14 16:30:41 · 626 阅读 · 0 评论 -
java设计模式:状态模式
1.状态模式状态模式(state),又称状态对象模式,是对象的行为模式。状态模式允许对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。2.状态模式的结构状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。示意图如下:状态模式参与角色:抽象状态(State)角色:定义接口,用来封装环境(Context)对象一个原创 2013-10-15 13:40:17 · 676 阅读 · 0 评论 -
java设计模式笔记:访问者模式
1.访问者模式 访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。2.访问者模式的结构 访问者模式适用于数据结构相对未定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。访问者模式的简略图如下所示: 数原创 2013-10-15 21:23:43 · 642 阅读 · 0 评论 -
Java设计模式笔记:解释器
解释器模式解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式的结构下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示: 模式所涉及的角色如下所示: (1)抽象表达式(Expression)角原创 2013-10-16 20:44:36 · 1223 阅读 · 0 评论 -
java设计模式笔记:调停者模式
调停者模式调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。为什么需要调停者 如下图所示,这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象原创 2013-10-16 21:41:03 · 772 阅读 · 0 评论 -
java设计模式笔记之适配器
1.适配器模式适配器模式把一个类的接口变换成客户端所期待的的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式有两种形式:类的适配器模式和对象的适配器模式2.类的适配器模式(1)静态结构图客户端期待的接口是operation2,而现有类Adaptee没有,所以需要一个Adapter,使用Adaptee的操作operation1实原创 2013-08-17 11:26:55 · 728 阅读 · 0 评论 -
缺省适配模式
1.概述缺省适配模式是适配器模式的一个特例。它为一个接口提供缺省实现,这样子类型就可以从这个缺省实现扩展,而不用实现原接口所有的方法。这个原来的接口就是Adaptee,缺省实现是一个用类(可以是抽象类)实现的Adapter。2.模式结构接口Adaptee中有3个或者更多接口方法,而Adapter为所有的接口方法提供了缺省实现,扩展时就不用被迫实现所有的方法,只需要实现自己需要的原创 2013-08-17 15:54:24 · 1090 阅读 · 0 评论 -
java设计模式笔记之工厂方法
1.简单工厂的改进简单工厂在有新产品加入时,需要修改工厂类,而且产品类层次越复杂,就会有一个庞大而复杂的创建类。工厂方法模式较简单工厂最大的不同是,核心的工厂类不在是一个具体类,负责具体产品的创建,而是一个抽象类,将具体创建工作下移到子工厂类。使得系统允许在不修改具体工厂类的前提下,添加一个新的产品。只需要添加一个新的工厂实现类。2.模式的结构抽象工厂(Creator):所原创 2013-08-06 15:42:53 · 647 阅读 · 0 评论 -
java设计模式笔记之简单工厂
1.模式结构简单工厂模式就是有一个工厂类根据传入的变量决定哪一种产品的实例。工厂类(Creator): 负责创建实例,由客户端调用.抽象产品(Product):需要创建的产品的共有的父类或者接口.对客户端只暴露这个接口。具体产品(ConcreteProduct): 工厂类的创建的实际实例,可以有多个,工厂类根据参数决定创建哪一个。2.源码Creator:原创 2013-08-06 14:41:52 · 742 阅读 · 0 评论 -
java设计模式笔记之抽象工厂
1.抽象工厂模式产品族:指不同产品等级机构中,功能相关联的产品组成家族。例如:微型计算机有2个系列:PC和MAC系列。2个产品系列中都有Ram和CPU产品。那么PC-Ram和MAC-Ram就组成了Ram产品族。PC-CPU和MAC-CPU就组成了CPU产品族。工厂方法模式适用于一个层级结构复杂的产品系列的创建,但是当一个系统需要创建多个产品系列,如上面的例子中有2个产品系列。如果使用工厂方原创 2013-08-06 18:01:06 · 741 阅读 · 0 评论 -
Java设计模式笔记之合成模式
1.合成模式合成(Composite)模型模式属于对象的结构模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素和复合元素同等看待。2.模式结构(1)抽象构件(Component):抽象角色,定义所有单纯构件和复合构件的共同行为。(2)树叶(leaf):没有子构件的单纯构件(3)树枝(Composite):复合构件,包原创 2013-08-20 17:47:22 · 730 阅读 · 0 评论 -
Java设计模式笔记之装饰模式
1.装饰模式装饰模式(Decorator)又名包装(wraper)模式。装饰模式以对客户端透明方式扩展对象的功能,是继承关系的一个替代方案。2.模式结构装饰模式中的角色:抽象构件(Component):一个抽象对象,定义被装饰构件的行为;具体构件(ConcreteComponent):被装饰的类,需要添加功能的类;抽象装饰角色(Decorator):持有一个原创 2013-08-21 14:41:54 · 931 阅读 · 0 评论 -
软件设计之UML—UML中的六大关系
转载自:软件设计之UML—UML中的六大关系一、UML中的六大关系在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。1.1、 继承关系—泛化(Generalizatio转载 2013-08-06 20:58:52 · 906 阅读 · 0 评论 -
java设计模式笔记之建造模式
1.建造模式(builder)讲一个产品的内部表象和产品生产过程分割开来,从而使一个建造过程生成具有不同内部表象的产品对象。2.结构在这个示意性的系统里,最终产品Product只有两个零件,即part1和part2。相应的建造方法也有两个:buildPart1()和buildPart2() 抽象建造者(Builder)角色:给 出一个抽象接口,以规范产品对象的原创 2013-08-08 17:50:10 · 695 阅读 · 0 评论 -
Java设计模式笔记之代理模式
1.代理模式代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。2.代理的种类如果按照使用目的来划分,代理有以下几种:(1)远程代理(Remote):为一个位于不同的地址空间的对象提供一个局域代表对象。(2)虚拟代理(Virtual):根据需要创建一个资源消耗比较大的对象,使得此对象只在需要时才会被真正创建,之前使用的是代理。原创 2013-08-22 17:56:11 · 626 阅读 · 0 评论 -
智能引用代理例子
1.系统需求明细一个B2B的收费网站,提供了一个查询接口,可查询相关服务。功能要求:一是必须对查询用户进行身份检查;二是对用户的使用次数进行统计,以便收费2.系统设计第一步:抽象和具体的划分(查询功能)首先需要一个具体的查询功能,按照开闭原则,提供一个Searcher接口,以便以后可以扩展查询功能。第二步:辅助功能提供两个辅助功能:AccessValidator类用于检原创 2013-08-24 11:24:39 · 2249 阅读 · 0 评论 -
java设计模式笔记之原型模式
1.原型模式原型模式术语对象的创建模式。通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对像的方法创建出更多同类型的对象。2.Java中的cloneJava语言提供的Cloneable接口支起一个作用,就是在运行时期通知Java虚拟机可以安全地在这个类上使用clone()方法。通过这个方法可以得到一个对象的复制。clone()方法需要满足以下的描述:(1)对任原创 2013-08-12 21:30:29 · 549 阅读 · 0 评论 -
Java设计模式笔记之享元模式
1.享元模式享元模式是对象的结构模式。享元模式以对象共享的方式高效的支持大量的细粒度对象。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。内蕴状态是存储在对象内部,并且不会随环境改变而有所不同的,一般是在创建对象时设置。因此一个对象可以具有内蕴状态并可以共享。外蕴状态是随环境改变而改变、不可以共享状态。享元对象的外蕴原创 2013-08-26 12:15:03 · 572 阅读 · 0 评论 -
Java设计模式笔记之门面模式
1.门面模式(Facade)门面模式是对象的结构模式。外部与一个子系统的通信必须通过一个统一门面(Facade)对象进行通信。门面对象通过对子系统功能的整理,给外界提供一个更高层,更简洁的接口。2.门面模式结构门面模式适合比较复杂大型的功能系统,一般描述的是子系统(功能模块)之间的关系,下面是用协作图来描述的门面模式。从上述协作图可以看出,门面中只有两种角色:门面角色(原创 2013-08-26 17:28:14 · 947 阅读 · 0 评论 -
java设计模式笔记之单例模式
1.单例模式单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。3个要点:一是某个类只能有一个实例;而是必须自行创建这个实例;三是必须向整个系统提供这个实例。一般资源管理器、工厂类等都被设计成单例。2.结构图结构图很简单,一个Singleton,自己创建和持有自己的一个实例,并保持它唯一。3.饿汉式单例public class原创 2013-08-08 15:58:48 · 658 阅读 · 0 评论