随笔分类 - 设计模式
Java设计模式
摘要:单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 概述 某些情况下,我们需要某个类只能创建一个对象。 模式的结构 单例类包含自身声明的类变量,这个变量是单例类唯一的实例 单例类的构造方法访问权限是private,保证其他类无法创建该类的实例 单例类负责创建自己唯一的实例,并提供访问的
阅读全文
摘要:工厂方法模式(别名:虚拟构造):定义一个用于创建对象的接口,让其子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 概述 书上的例子个人觉得不是很好,因此这里我用Java集合里的一个例子来说明: Java集合中有两个接口Collections和Iterator。现在有一个LinkedLi
阅读全文
摘要:责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 概述 使用多个对象处理用户请求,这些对象组织成一条责任链A-B-C-D。收到用户请求时,A先接收到用户请求,根据需要处理,这时可以直接响应用户
阅读全文
摘要:适配器模式(别名:包装器):将一个类的接口装化成客户希望的另一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 概述 比如A型螺母可以使用A型螺丝,B型螺母可以使用B型螺丝,现在需要在A型螺母上使用B型螺丝,这时必须使用适配器。 模式的结构 目标(Target):一个接口,该接口是
阅读全文
摘要:定义一系列算法,把它们一个个封装起来,并且它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 概述 比如,设计一个Army类,该类有一个int数组,数组表示士兵的号码,该类中有一个lineUp()方法,该方法用于将士兵按照号码从小到大排列。但有时候需要将士兵按照从大到小排列,此时要么新增一个
阅读全文
摘要:装饰模式(别名:包装器):动态的给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。 概述 许多时候,我们需要改进某个对象的功能。例如麻雀类的实例能连续飞行100米,如果用麻雀类创建了5个麻雀,想让其中一只飞行150米,在不修改麻雀类的代码前提下,怎么做? 装饰模式是动态地扩展一个对象
阅读全文
摘要:观察者模式:定义对象之间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都得到通知并自动更新。 概述 观察者模式是关于多个对象想知道一个对象中数据变化情况的一种成熟的模式。模式中有一个“主题”和若干个“观察者”。当主题状态发生变化时,观察者得到通知。 模式的结构 模式的使用 下面
阅读全文
摘要:创建型 创建对象时,不再由我们直接实例化对象;而是根据特定场景,由程序来确定创建对象的方式,从而保证更大的性能、更好的架构优势。创建型模式主要有简单工厂模式(并不是23种设计模式之一)、工厂方法、抽象工厂模式、单例模式、生成器模式和原型模式。 结构型 用于帮助将多个对象组织成更大的结构。结构型模式主
阅读全文
摘要:命令模式(别名:动作,事务):将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化。对请求排队或记录请求日志,以及支持可撤销的操作。 概述 当一个对象请求另一个对象调用其方法达到某种目的,如果请求者不希望或无法直接与被请求者打交道,可以使用命令模式。 模式的结构 包含四种角色: 1)接
阅读全文