随笔分类 -  设计模式

摘要:1. 简单工厂模式简介 1.1 定义 简单工厂模式:定义一个Factory类,可以根据参数的不同返回不同类的实例,被创建的实例通常有共同的父类。 简单工厂模式:只需要一个Factory类。 简单工厂模式:又称为静态工厂模式(Static Factory Pattern),Factory类为静态类或包 阅读全文
posted @ 2014-08-02 22:36 libingql 阅读(10947) 评论(0) 推荐(3) 编辑
摘要:1.数据并发控制(Data Concurrency Control)简介 数据并发控制(Data Concurrency Control)是用来处理在同一时刻对被持久化的业务对象进行多次修改的系统。当多个用户修改业务对象的状态并试图并发地将其持久化到数据库时,需要一种机制来确保一个用户不会对另... 阅读全文
posted @ 2014-07-29 11:15 libingql 阅读(4595) 评论(0) 推荐(0) 编辑
摘要:1.Identity Map模式简介 Identity Map(标识映射)模式是通过将所有已加载对象放在一个映射中确保所有对象只被加载一次,并且在引用这些对象时使用该映射来查找对象。在处理数据并发访问时,要有一种策略让多个用户共同影响同一个业务实体,这个固然很重要。同样重要的是,单个用户在一个... 阅读全文
posted @ 2014-07-29 09:46 libingql 阅读(3490) 评论(0) 推荐(0) 编辑
摘要:1. 开闭原则概述 开闭原则(OCP,The Open-Closed Principle)两个主要特征: (1)对扩展开放(open for extension):模块的行为的可以扩展的,当应用的需求改变时,可以对模块进行扩展。 (2)对修改关闭(closed for modification):对 阅读全文
posted @ 2014-06-23 19:45 libingql 阅读(4256) 评论(0) 推荐(0) 编辑
摘要:1. 单一职责原则核心思想 一个类应该有且只有一个变化的原因。 2. 为什么引入单一职责原则 单一职责原则将不同的职责分离到单独的类,每一个职责都是一个变化的中心。 在SRP中,把职责定义为变化的原因。 当需求变化时,将通过更改职责相关的类来体现。如果一个类拥有多于一个的职责,则多个职责耦合在一起, 阅读全文
posted @ 2014-06-23 16:46 libingql 阅读(6872) 评论(0) 推荐(2) 编辑
摘要:1、访问者模式简介1.1>、定义 作用于某个对象群中各个对象的操作,可以使在不改变对象本身的情况下,定义作用于对象的新操作。1.2>、使用频率 低2、访问者模式结构2.1>、结构图 阅读全文
posted @ 2014-04-09 23:28 libingql 阅读(1330) 评论(0) 推荐(0) 编辑
摘要:1、状态模式简介1.1>、定义 状态模式的核心思想是允许一个对象在它的内部状态改变时改变它的行为,即不同的状态对应不同的行为。 状态模式的针对性很强,当有状态变化的时候可以选择状态模式。1.2>、使用频率 中等2、状态模式结构2.1>、结构图2.2>、参与者 状态模式参与者: ◊ Con... 阅读全文
posted @ 2014-04-09 21:53 libingql 阅读(8877) 评论(2) 推荐(1) 编辑
摘要:1、命令模式简介1.1>、定义 命令模式的目的是解除命令发出者和接收者之间的紧密耦合关系,使二者相对独立,有利于程序的并行开发和代码的维护。命令模式的核心思想是将请求封装为一个对象,将其作为命令发起者和接收者的中介,而抽象出来的命令对象又使得能够对一系列请求进行操作,如对请求进行排队,记录请求日志以及支持可撤销的操作等。1.2>、使用频率 中高2、命令模式结构2.1>、结构图2.2>、参与者 命令模式参与者: ◊ Command:命令抽象类,声明一个执行操作的接口Execute,该抽象类并不实现这个接口,所有的具体命令都继承自命令抽象类。 ◊ ConcreteComma 阅读全文
posted @ 2014-04-08 11:41 libingql 阅读(9034) 评论(0) 推荐(1) 编辑
摘要:1、备忘录模式简介1.1>、定义 备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。1.2>、使用频率 低2、备忘录模式结构2.1>、结构图2.2>、参与者 备忘录模式参与者: ◊ Memento ° 为创建对象的各个部件指定抽象接口 ° 防止Originator意外的其他对象访问备忘录。备忘录实际上有两个接口,Caretaker只能看到备忘录的窄接口,它只能将备忘录传递给其他对象。Originator能够看到一个宽接口,允许它访问返回到先前状态所需的所有数据。理想的情况 阅读全文
posted @ 2014-04-07 23:04 libingql 阅读(3421) 评论(1) 推荐(1) 编辑
摘要:1、职责链模式简介1.1>、定义 职责链模式是一种行为模式,为解除请求的发送者和接收者之间的耦合,而使多个对象都有机会处理这个请求。将这些对象连接成一条链,并沿着这条链传递该请求,直到有一个对象处理它。1.2>、使用频率 中低2、职责链模式结构2.1>、结构图2.2>、参与者 职责链模式参与者: ◊ Handler ° 定义一个处理请求的接口 ° 实现后继链 ◊ ConcreteHandler ° 处理其所负责的请求 ° 可访问其后继者 ° 如果可处理该请求,则处理;否则将该请求转发给它的后继者。 ◊ Client:向链 阅读全文
posted @ 2014-04-07 20:14 libingql 阅读(3728) 评论(0) 推荐(0) 编辑
摘要:迭代器模式把对象的职责分离,职责分离可以最大限度减少彼此之间的耦合程度,从而建立一个松耦合的对象。职责分离的要点是对被分离的职责进行封装,并以抽象的方式建立彼此之间的关系。1、迭代器模式简介1.1>、定义 迭代器模式提供一种方法可以顺序访问聚合对象中各个元素,但又不暴露该对象的内部表示。1.2>、使用频率 高2、迭代器模式结构2.1>、结构图2.2>、参与者 迭代器模式参与者: ◊ Iterator:迭代器定义访问和遍历元素的接口 ◊ ConcreteIterator ° 具体迭代器实现迭代器接口 ° 对该聚合遍历时跟踪当前位置 ◊ Aggregat 阅读全文
posted @ 2014-04-01 16:31 libingql 阅读(4611) 评论(0) 推荐(0) 编辑
摘要:在软件构建过程中,需要为某些对象建立一种“通知依赖关系”,即一个对象的状态发生改变,所有的依赖对象都需要得到通知。1、观察者模式简介1.1>、定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。1.2>、使用频率 高2、观察者模式结构2.1>、结构图2.2>、参与者 观察者模式参与者: ◊ Subject ° 抽象的主题,被观察的对象 ° 提供Attach和Detach Observer对象的接口 ◊ ConcreteSubject ° 具体的被观察对象,维持ConcreteSubj 阅读全文
posted @ 2014-04-01 15:47 libingql 阅读(8221) 评论(0) 推荐(2) 编辑
摘要:你去银行取款的时候,银行会给你一张取款单,这张取款单就是一个模板,它把公共的内容提取到模板中,只留下部分让用户来填写。在软件系统中,将多个类的共有内容提取到一个模板中的思想便是模板方法模式的思想。 模板方法模式是基于继承的代码复用基本技术,在模板方法模式中,可以将相同的代码放在父类中,而将不同... 阅读全文
posted @ 2014-04-01 12:14 libingql 阅读(8269) 评论(0) 推荐(1) 编辑
摘要:代理模式提供了一个中介控制对某个对象的访问。现实生活中,我们可能会用支票在市场交易中用来代替现金,支票就是账户中资金的代理。1、代理模式简介1.1>、定义 代理模式(Proxy)定义:代理模式为客户端程序提供一种中间层以控制对这个对象的访问。1.2>、使用频率 中高2、代理模式结构2.... 阅读全文
posted @ 2014-04-01 10:07 libingql 阅读(6212) 评论(0) 推荐(0) 编辑
摘要:1. 外观模式简介 外观模式主要解决的问题:当有多个类要处理时,需要一个个类去调用,没有复用性和扩展性。外观模式将处理子类的过程封装成操作,简化客户端的调用过程。 1.1 定义 外观模式(Facade)通过提供一个统一接口,来访问子系统的多个接口。 使用外观模式时,创建一个统一的类,用来包装子系统中 阅读全文
posted @ 2014-03-31 21:58 libingql 阅读(4923) 评论(0) 推荐(0) 编辑
摘要:1. 装饰模式简介 装饰模式动态地给一个对象添加额外的职责。例如一幅画有没有画框都可以挂在墙上,画就是被装饰者。但是通常都是有画框的。在挂在墙上之前,画可以被蒙上玻璃,装到框子里,所以在画上加一层画框,并把它们组合成一个整体——有框的画。这样随着不断有新的装饰的加入,就给商品不断地打上包装,变成一... 阅读全文
posted @ 2014-03-30 17:48 libingql 阅读(4358) 评论(0) 推荐(0) 编辑
摘要:1、原型模式简介1.1>、定义 原型模式(Prototype)用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。1.2>、使用频率 中1.3>、原型模式应用 首先从实际生活来了解原型模式的由来,假设你有一份非常好的讲义,你的朋友也想要一份,那么怎么办?重新手抄一份?显然不是,当然是用复印机复印一份来得方便、直接,并且准确性也高,这种用原型来复制而不是重新创建的思维方式就是原型模式的核心思想。 Prototype Pattern也是一种创建型模式,它关注的是大量相同或相似对象的创建问题。应用原型模式就是建立一个原型,然后通过对原型来进行复制的方法,来产生一个和原型 阅读全文
posted @ 2014-03-30 01:38 libingql 阅读(8240) 评论(1) 推荐(1) 编辑
摘要:1. 工厂方法模式简介 1.1 定义 工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式是以一个类的实例化延迟到其子类。 Factory Method模式用于在不指定待创建对象的具体类的情况下创建对象。 Factory Method模式的主要意图是隐藏对象创建的复杂性。C 阅读全文
posted @ 2014-01-04 15:33 libingql 阅读(1778) 评论(0) 推荐(0) 编辑
摘要:1. 策略模式简介 1.1 定义 策略是为达到某一目的而采取的手段或方法,策略模式的本质是目标与手段的分离,手段不同而最终达成的目标一致。客户只关心目标而不在意具体的实现方法,实现方法要根据具体的环境因素而变化。 1.2 使用频率 中高 2. 策略模式结构图 2.1 结构图 2.2 参与者 策略模式 阅读全文
posted @ 2013-12-30 21:11 libingql 阅读(2162) 评论(0) 推荐(0) 编辑
摘要:1、组合模式简介1.1>、定义 组合模式主要用来处理一类具有“容器特征”的对象——即它们在充当对象的同时,又可以作为容器包含其他多个对象。1.2>、使用频率 中高2、组合模式结构图2.1>、结构图2.2>、参与者 组合模式参与者: ◊ Component ° 声明组合中对象的接口; ° 实现全部类中公共接口的默认行为; ° 声明访问和管理子类的接口; ° (可选择)定义接口提供在递归结构中访问父类。 ◊ Leaf ° 表示在组合对象中叶子节点对象,没有子节点; ° 定义组合对象中的初始行为。 ◊ Composi 阅读全文
posted @ 2013-12-29 14:47 libingql 阅读(8823) 评论(0) 推荐(1) 编辑