随笔分类 -  设计模式

设计模式
摘要:什么是设计模式 为解决某一类普遍存在的问题而提供的一种解决方案; 分类及定义 创建型模式(5) 1、原型模式:通过复制一个已存在对象来生成一个新对象,被复制的对象称为原型;详情... 2、单例模式:一个类只有一个全局实例;详情... 3、生成器模式:对复杂对象的创建过程进行抽象,相同的创建步骤,不一 阅读全文
posted @ 2016-02-27 11:50 风一样的码农 阅读(12672) 评论(2) 推荐(3) 编辑
摘要:使用频率:★☆☆☆☆ 一、什么是解释器模式 定义一些语法规则,然后定义一个解析器去解析该语法; 二、补充说明 该模式极少使用,简单了解下吧~ 三、角色(以加减法解析为例) 抽象表达式类 末端表达式类:数字变量 非末端表达式:+-操作 环境角色:存一些变量。。。 客户端 四、例子,JAVA实现 参考维 阅读全文
posted @ 2016-02-27 11:02 风一样的码农 阅读(1821) 评论(0) 推荐(0) 编辑
摘要:使用频率:★☆☆☆☆ 一、什么是访问者模式 在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升;//定义参考链接 二、补充说明 数据结构的每一部分对象可以接收访问者的调用,该部分对象向访问者传入自身对象,访问者反过来执行该部分对象的相关操作;//有点难理解,看代码吧~ 阅读全文
posted @ 2016-02-27 10:05 风一样的码农 阅读(1538) 评论(0) 推荐(0) 编辑
摘要:什么是备忘录模式 保存对象的某个状态并可以恢复到该状态 补充说明 例子很多,如回退 ctri + z,回滚,ps恢复到操作历史的某一刻等等。。。 角色 备忘录角色:存储状态 发起人角色:创建备忘录,并利用备忘录存储自己的状态 负责人:管理备忘录 客户端 例子,JAVA实现 例子描述:显示一个对象的历 阅读全文
posted @ 2016-02-27 09:02 风一样的码农 阅读(1779) 评论(5) 推荐(0) 编辑
摘要:使用频率:★★★☆☆ 一、什么是中介者模式 对象之间通过中介者对象进行交互,而不是直接交互; 二、补充说明 对紧密关联的各个对象解耦; 典型例子:QQ群,聊天室; 三、角色 抽象中介者 具体中介者 抽象对象 具体对象 四、例子,JAVA实现 例子说明,一个网络聊天室 抽象中介者 具体中介者 抽象对象 阅读全文
posted @ 2016-02-27 00:02 风一样的码农 阅读(801) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★☆☆ 一、什么是模板方法模式 使用了JAVA的继承机制,在抽象类中定义一个模板方法,该方法引用了若干个抽象方法(由子类实现)或具体方法(子类可以覆盖重写); 二、补充说明 其实就是JAVA的继承以及抽象方法、重写覆盖的使用; 一般把模板方法定义成final避免被子类修改 三、角色 抽 阅读全文
posted @ 2016-02-25 16:17 风一样的码农 阅读(4253) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★☆☆ 一、什么是责任链模式 为请求创建了一个接收者对象的链,每个接收者都包含对另一个接收者的引用,当某个接受者不能处理该请求时,会将该请求转给下一个接受者处理; 二、补充说明 请求发送者与请求接受者解耦 应用例子:struts的拦截器,servlet的过滤器 三、角色 抽象请求处理者 阅读全文
posted @ 2016-02-25 15:06 风一样的码农 阅读(4597) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★★☆ 一、什么是命令模式 将请求封装成命令对象,请求的具体执行由命令接收者执行; 二、补充说明 命令发送者与命令执行者解耦; 可扩展命令模式:对请求排队或者记录请求日志,以及支持可撤销的操作; 每一个命令都是一个操作:请求的一方发出请求,要求执行一个操作;接收的一方收到请求,并执行操 阅读全文
posted @ 2016-02-25 11:49 风一样的码农 阅读(4501) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★☆☆ 一、什么是状态模式 一个对象的行为根据其内部状态的改变自动变化; 二、补充说明 结构与策略模式基本一致; 与策略模式区别:使用策略模式时,客户端手动选择策略,使用状态模式时,其行为是根据状态是自动切换的。 其内部状态改变时,它的行为(方法)也跟着改变,看起来就像修改了类的方法; 阅读全文
posted @ 2016-02-25 10:24 风一样的码农 阅读(927) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★★☆ 什么是策略模式 对象的行为,在不同的环境下,有不同的实现; 比如人的上班行为,在不同的环境下,可以选择走路上班或者开车上班,由客户端根据情况决定采用何种策略; 补充说明 符合“开闭原则”,可以在不修改原有代码的基础上替换、添加新的策略; 不同的策略可以相互替换; 客户端自己决定 阅读全文
posted @ 2016-02-25 09:42 风一样的码农 阅读(1526) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★★★ 一、什么是迭代器模式 提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。 二、补充说明 单一职责原则,分离了集合对象的遍历行为,抽象出一个迭代器类来负责; 三、角色 迭代器接口 迭代器具体实现 抽象容器 具体容器 四、例子,JAVA实现 例子说明:使用迭代器 阅读全文
posted @ 2016-02-24 17:21 风一样的码农 阅读(1799) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★★★ 一、什么是观察者模式 一对多的关系,又叫发布-订阅模式,即一个对象的状态发生变化,所有依赖它的对象能够知道该变化并自动更新; 二、补充说明 一对多:发布者是一,订阅者是多;观察目标是一,观察者是多;状态变化者是一,得到变化通知者是多; 三、角色 抽象主题 具体主题 抽象观察者 阅读全文
posted @ 2016-02-24 14:41 风一样的码农 阅读(1479) 评论(0) 推荐(0) 编辑
摘要:使用频率:★☆☆☆☆ 一、什么是享元模式 大量细粒度对象共享复用 二、补充说明 可以节约内存空间,提高系统的性能; 一个对象有内部和外部两种状态,内部状态是不变的,外部状态是可变的,把一个对象分成内部状态和外部状态,然后通过共享内部状态,达到节约内存空间的目的; 应用场景举例:一个文档中多次出现相同 阅读全文
posted @ 2016-02-22 15:12 风一样的码农 阅读(1615) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★☆☆ 一、什么是桥接模式 将对象的行为抽象为接口,作为抽象类的成员属性在抽象层进行组合(个人理解,仅供参考); 二、补充说明 改变对象与其行为的强耦合关系,使之与行为解耦; 使对象的行为以及对象本身都能独立变化; 三、角色 抽象类 具体实现类 行为接口 具体行为实现类 客户端 四、例 阅读全文
posted @ 2016-02-19 16:22 风一样的码农 阅读(1824) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★★☆ 一、什么是组合模式 树形结构的实现,用于描述“整体-部分”的关系; 二、补充说明 使用场景:部分/整体场景,如树形菜单; 文件/文件夹; 树形结构的公司层级关系... 三、角色 抽象角色 叶子角色 树枝角色 客户端角色 四、例子,JAVA实现 利用组合模式实现如下文件/文件夹的 阅读全文
posted @ 2016-02-17 23:32 风一样的码农 阅读(2142) 评论(1) 推荐(0) 编辑
摘要:使用频率:★★★★★ 一、什么是外观模式 在子系统中的接口之上定义一个更高层次的接口,方便使用子系统中的接口; 二、补充说明 缺点:不符合开闭原则,修改子系统的代码会影响高层接口代码; 优点:引入外观类可以降低系统的复杂度,提高了客户端使用的便捷性; 优点:客户类与子系统解耦; 三、角色 子系统角色 阅读全文
posted @ 2016-02-16 22:57 风一样的码农 阅读(1289) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★★☆ 一、什么是代理模式 通过代理对象间接控制并访问目标对象的方法; 二、补充说明 想到代理模式,容易让人想到AOP思想,Spring中的AOP可以通过动态代理实现; 代理模式有静态代理和动态代理两种; 解耦调用者和被调用者; 三、角色 抽象主题,定义一些需要代理的方法 具体主题,实 阅读全文
posted @ 2016-02-15 21:56 风一样的码农 阅读(1247) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★★☆ 一、什么是适配器 适配器是将一种接口改造成另外一种接口的一个包装类; 二、补充说明 有两种实现方式,一种是通过继承,另外一种通过组合; 使用组合实现的时候,跟装饰者模式有点类似,不过侧重点不同,装饰者模式是给对象增加新行为,适配器是为了适配接口; 优点:符合开闭原则;适配者类和 阅读全文
posted @ 2016-02-13 22:48 风一样的码农 阅读(1793) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★☆☆ 一、什么是原型模式 通过复制一个已存在对象来生成一个新对象,被复制的对象称为原型; 二、补充说明 1、JAVA中Object的clone方法已经为什么提供了复制对象的实现,且该方法为本地方法,性能好,在需要大量复制对象的情况,使用clone创建对象比new效率高; 补充下深拷贝 阅读全文
posted @ 2016-02-05 22:42 风一样的码农 阅读(1977) 评论(0) 推荐(0) 编辑
摘要:使用频率:★★★★☆ 一、什么是单例模式 一个类只有一个全局实例 二、补充说明 一般把其构造方法设为私有,另外提供一个可以获取该实例的静态方法; 由于java存在反射机制,即使是私有构造方法,也能被外部创建,所以一般的写法严格来讲不属于单例模式;(ps:可以在构造方法内加个静态flag标志判断,保证 阅读全文
posted @ 2016-02-05 21:40 风一样的码农 阅读(1942) 评论(1) 推荐(0) 编辑