Note

春蚕到死丝方尽,人至期颐亦不休,一息尚存须努力,留作青年为范畴。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Design pattern

摘要:介绍 概念:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 应用场景:实体之间内部属性有差别,而且实体类型经常增加。他们的调用方式相同,但是调用的规则经常变化。 缺点:实体的特殊内容访问类需要知道。 代码: //实体基类 package n 阅读全文
posted @ 2016-03-06 14:07 'Note' 阅读(359) 评论(0) 推荐(1)

摘要:介绍 概念:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 应用场景:语言解释器(把我们能看懂的代码转换成了难看懂的机器码) 好处:以简单的方式使用复杂的东西。 例子 //解释器 package note.com.interpreter; /** * 阅读全文
posted @ 2016-03-06 12:25 'Note' 阅读(389) 评论(0) 推荐(0)

摘要:介绍 概念:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 应用场景:不同功能的模块之间调用关系复杂,耦合度高,不利于修改时使用。 好处:降低耦合,模块独立。 坏处:中介者业务复杂,不易维护。 代码: //定义模块抽象类 阅读全文
posted @ 2016-03-06 12:01 'Note' 阅读(368) 评论(0) 推荐(0)

摘要:介绍 概念:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 应用场景:用户主动切换执行规则,比如 画图工具,不同的工具执行的事件效果不同. 压缩工具的格式,不同的格式执行不同的压缩算法. 好处:扩展容易,不会破坏原有的结构,遵循开闭原则。 阅读全文
posted @ 2016-03-06 10:55 'Note' 阅读(513) 评论(0) 推荐(0)

摘要:介绍 首先明白两个单词:打开和关闭是同一个物体的两种状态,是需要经常互相切换的,不是没有关系的两个单词. let`s Go 概念:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 应用场景:关闭着的门--》打开的门--》关闭的门,自动的切换到下一个状态的可执行事件。 好处:控 阅读全文
posted @ 2016-03-04 18:23 'Note' 阅读(263) 评论(0) 推荐(0)

摘要:介绍 概念:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 应用场景:经常增加处理场景的业务,比如处理零食商品的类,不断有新增的零食,就需要不断增加处理零食的方法,耦合度太高.为了降低耦合度使用职责链模 阅读全文
posted @ 2016-03-04 15:05 'Note' 阅读(454) 评论(0) 推荐(0)

摘要:介绍 概念:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 应用场景:统一处理器的入口,由一个公共的入口来执行各种各样的请求 好处:扩展方便,入口统一 代码: //处理器的接口定义 package note.com.Command; 阅读全文
posted @ 2016-03-04 11:53 'Note' 阅读(449) 评论(0) 推荐(0)

摘要:介绍 概念:定义对象间的一种一对多的依赖关系 ,当一个对象的状态发生改变时 , 所有依赖于它的对象都得到通知并被自动更新。 应用场景:例如新闻订阅模式,邮件订阅等,客户端是观察者,新闻发布平台是被观察者,最重要的一点是被观察者控制着主动权. 注意区分的是:和时下的新闻APP并不相同,现在新闻APP采 阅读全文
posted @ 2016-03-04 10:30 'Note' 阅读(654) 评论(0) 推荐(0)

摘要:介绍 概念:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 应用场景:需要保存某个对象的某个时间的状态,如游戏的暂停,存档,恢复功能. 如果把数据库与实体关联起来了,也可以说数据库是这个对象的备忘录. 接来下实现一个游戏存档与读 阅读全文
posted @ 2016-03-03 17:22 'Note' 阅读(432) 评论(0) 推荐(0)

摘要:介绍 概念:运用共享技术有效地支持大量细粒度的对象。 应用场景:项目中某个类需要产生大量的对象,其中对象中的属性创建占用了大量的内存,如果这些属性对象可以被公用,那么可以利用享元模式把他们指向同一个地址. 这让我想起了字符串常量池的做法. 那么我们就用例子模仿一个字符串存储的逻辑. 代码: //自创 阅读全文
posted @ 2016-03-03 15:00 'Note' 阅读(256) 评论(0) 推荐(0)

摘要:介绍 意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 使用场景:当一个接口中有多个方法定义,它的方法有多种有不同的实现,为了避免在子类中重复的定义相同的方法. 代码: //剥离功能1接口 package note.com.bridge; /** * 颜色接口 * @author lxz 阅读全文
posted @ 2016-03-02 17:34 'Note' 阅读(314) 评论(0) 推荐(0)

摘要:介绍 意图:动态地给一个对象添加一些额外的职责。就增加功能来说, D e c o r a t o r模式相比生成子类更为灵活。 使用场景:处理规则可以任意组装的时候 结构图: 代码: //过滤功能接口 package note.com.decorator; public interface Deal 阅读全文
posted @ 2016-03-02 16:28 'Note' 阅读(208) 评论(0) 推荐(0)

摘要:介绍 意图:将对象组合成树形结构以表示“部分 -整体”的层次结构。 C o m p o s i t e使得用户对单个对象和组合对象的使用具有一致性。 适用性:1,你想表示对象的部分 -整体层次结构。 2,你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。 应用场景:树形结 阅读全文
posted @ 2016-03-02 11:38 'Note' 阅读(267) 评论(0) 推荐(0)

摘要:介绍 意图:将一个类的接口转换成客户希望的另外一个接口。 A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 别名:包装器 Wrapper 动机:有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。 应用场景:需要使 阅读全文
posted @ 2016-03-02 10:13 'Note' 阅读(345) 评论(0) 推荐(0)

摘要:介绍 概念:为其他对象提供一种代理以控制对这个对象的访问。 使用场景:增加一个对象操作的访问控制,如根据权限判断用户是否能执行某个方法. 另一个应用是延迟加载,比如图片的对象,直到真正改变图片文件时才真正加载. 一个带访问控制的代理例子: 代码: //真正的执行对象 package note.com 阅读全文
posted @ 2016-03-01 17:12 'Note' 阅读(289) 评论(0) 推荐(0)

摘要:介绍 概念:为子系统中的一组接口提供一个一致的界面, F a c a d e模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 理解:某个子系统有很多很多的功能,包括一些很底层的操作,但是对于调用这个子系统的用户来说很少去操作底层的操作,那么用户希望有一个特别简单的入口就可以使用这个子系统 阅读全文
posted @ 2016-03-01 15:11 'Note' 阅读(286) 评论(0) 推荐(0)

摘要:介绍 概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 使用场景:整个项目中只能创建一次对象的类.防止出现多个对象同时存在.如:数据库连接池,有多个就不能有效控制连接数了. 两种实现方式 第一种: //单例类 package note.com.singleton; public clas 阅读全文
posted @ 2016-03-01 14:24 'Note' 阅读(207) 评论(0) 推荐(0)

摘要:介绍 概念:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 例如:衣服制造厂(实体)有制造衣服的功能,每种衣服的制造流程都不相同,因此把制造衣服这个复杂且可变的功能分离出来. 使用场景:实体的某个功能复杂且不只有一种 好处:功能的扩展不影响实体,实体更加内聚,与可变的部分 阅读全文
posted @ 2016-03-01 13:51 'Note' 阅读(252) 评论(0) 推荐(0)

摘要:介绍 概念:由对象来生成新的对象,而不是用类类型或其他方式. 使用场景:需要对象克隆时 特点:参数复制了,不用再初始化数据 原型模式在C++等其他语言中运用较广,JAVA有Object的clone方法,所以使用起来比较简单 首先假如Object中没有clone方法,怎么来实现原型模式? 代码: 首先 阅读全文
posted @ 2016-03-01 10:59 'Note' 阅读(239) 评论(0) 推荐(0)

摘要:工厂模式分为两种:1,简单工厂模式 2,工厂模式 3,抽象工厂模式 文中例子的实体类继承关系图: 例子中需要构建的实体类代码省略 1,简单工厂模式: 概念:静态的,对生成对象进行封装的类 使用场景:去掉代码中new的操作, 统一生成对象的入口 好处:当对对象进行替换时,只需要修改工厂类中的代码即可, 阅读全文
posted @ 2016-02-29 17:46 'Note' 阅读(614) 评论(0) 推荐(0)