组合模式又叫做部分整体模式,适用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次 介绍 意图 将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性 优点 高层模块调用简单 节点自由增加 缺点 在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口类,违反了依赖导致的原则 实现 创建一个Employee类,使用该类作为组合模型. 创建Employee类,该类带有Employee对象的列表…
迭代器模式是Java和.NET编程环境中非常常用的设计模式.这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示 介绍 意图 提供一种方法顺序访问一个聚合对象中各个元素,无需暴露该对象的内部表示 应用实例 Java中的iterator 优点 它支持以不同的方式遍历一个聚合对象 迭代器简化了聚合类 在同一个聚合上可以有多个遍历 迭代器模式中,增加新的聚合类和迭代器类都非常方便,无需修改原有代码 缺点 由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,…
桥接适用于把抽象化和实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构性模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦 这种模式设计到一个作为桥接的接口,使得实体类的功能独立于接口实现类.这两种类型的类可以被结构化改变而不互相影响. 介绍 设计模式意图: 将抽象部分和实现部分分离,使得它们可以独立变化. 优点: 抽象和实现的分离 优秀的拓展能力 缺点: 桥接模式的引入会增加系统的理解和设计难度,由于聚合挂链关系建立在抽象层,要求开发者针对抽象设计与编程. 使用场景: 如…
解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式.这种模式实现了一个表达式接口,该接口解释一个特定的上下文.这种模式被用在SQL解析.符号处理引擎等 介绍 意图 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子. 应用实例 编译器.运算表达式计算等 优点 可拓展性比较好,灵活 增加了新的解释表达式的方法 易于实现简单文法 缺点 可利用场景比较少 对于复杂的文法比较难维护 解释器模式可能会引起类膨胀 解释器模式采用递归调用的方法 实现 创建一个…
原型模式是用于创建重复对象,同时又能保证性能.这种类型的设计模式属于创建型模式,它提供了一种创建对象的方式 这种模式实现了一个原型接口,该接口用于创建当前对象的克隆.当直接创建对象的代价比较大时,则适合采用这种模式. 应用实例: 细胞分裂 Java中的Object.clone()方法 优点: 性能较高 逃避构造函数的约束 缺点: 配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候. 必须实…
外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.它想现有的系统添加了一个接口,以隐藏系统的复杂性 介绍 意图 为子系统中的一组接口提供了一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 应用实例 电脑只要按下开机键,就会自动执行开机的程序 Java的三层开发模式 优点 减少系统相互依赖 提高灵活性 提高安全性 缺点 不符合开闭原则,如果需要修改东西很麻烦,继承重写都不合适. 实现 我们将创建一个 Shape 接口和实现了 Shape 接口的实…
过滤器模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来 实现 创建一个Person对象.Criteria 接口和实现了该接口的实体类,来过滤 Person 对象的列表.CriteriaPatternDemo,我们的演示类使用 Criteria 对象,基于各种标准和它们的结合来过滤 Person 对象的列表. 创建一个Person类 public class Person { private String name; private String gender;…
责任链模式为请求创建了一个接受者对象的链.这种模式给予请求的类型,对请求的发送者和接受者进行解耦.这种类型的设计模式属于行为模式.在这种模式下,通常每个接收者都包含对另一个接收者的引用.如果一个对象不能处理该对象,那么它会把相同的请求传给下一个接收者,以此类推 介绍 意图 避免请求发送者和接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止 解决问题 责任链上的处理者负责处理请求,客户只需要将请求发送到责任链上即可,无须关心请求的处理…
适配器模式是作为两个不兼容的接口之间的桥梁.这种类型的设计模糊属于结构性模式,它结合了两个独立接口的功能 概念阐述 使用适配器模式可以解决在软件系统中,将一些旧的类放入新环境中,但是新环境要求的接口旧的类不能满足的情况. 使用情形: 系统需要使用旧的类,但是此类的接口不符合系统的需要 需要建立一个可以重复使用的类,用于一些彼此之间没有太大关系的一些类 通过接口转换,将一个类插入到另一个类中 优点: 可以让任何两个没有关联的类一起运行 提高了类的复用 增加了类的透明度 灵活性好 缺点: 过多的使用…
组合模式实际上是一种树形数据结构.以windows目录系统举例,怎么样用java语言描述一个文件夹? 定义一个文件夹类,文件夹类中包含若干个子文件类和若干个文件类. 进一步抽象,把文件夹和文件都看做节点,于是一个文件夹就可以描述为一个节点类,包含若干个子节点. 我们看看组合模式的代码 // 抽象节点 public abstract class Node { protected String name; abstract void add(Node node); abstract void rem…