Design Pattern
文章平均质量分 81
aspook
公众号「像未来一样」
展开
-
适配器模式-Adapter Pattern
基本概念适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那个类可以一起工作。适配器模式类结构图应用场景对于一个已经存在的类,如果它的接口或方法跟需求不匹配,但又不方便修改时,可以考虑使用适配器模式。其主要作用是希望复用一些现存的类,但接口又与复用环境要求不一致。举一个生活中最常见的原创 2015-07-27 14:24:58 · 748 阅读 · 0 评论 -
迭代器模式-Iterator Pattern
基本概念迭代器模式,提供一种方法以便顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。迭代器为遍历聚集结构提供了如开始、下一个、是否结束、当前项等统一接口。结构图上图摘自《大话设计模式》应用场景当需要访问一个聚合对象,而且不管这些对象是什么,都需要遍历的时候,应该考虑迭代器模式。源码示例1.定义一个迭代器接口package com.spook原创 2015-08-17 16:38:01 · 682 阅读 · 0 评论 -
单例模式-Singleton Pattern
基本概念单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。结构图饿汉式单例结构图,摘自《大话设计模式》应用场景如果一个类只想保持其唯一实例的时候。源码示例1.饿汉式单例package com.spook.singleton;/** * 饿汉式单例 */public class Singleton { private stat原创 2015-08-05 10:12:11 · 605 阅读 · 0 评论 -
抽象工厂模式-Abstract Factory Pattern
基本概念抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。结构图上图摘自《大话设计模式》应用场景一个系统的产品有多于一个的产品族,同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来,系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。源码示例1.创建电脑产品接口packag原创 2015-08-04 11:52:14 · 873 阅读 · 0 评论 -
工厂方法模式-Factory Pattern
基本概念工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。结构图上图摘自《大话设计模式》应用场景当你使用了简单工厂模式,再进行扩展时,本来是需要修改工厂类的,但这会违背开放-封闭原则,因此需要把简单工厂的内部逻辑判断转移到客户端来实现,达到对扩展开放的目的。源码示例1.创建Shape接口packag原创 2015-08-04 10:06:29 · 699 阅读 · 0 评论 -
简单工厂模式-Simple Factory Pattern
基本概念简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例,它是工厂模式家族中最简单实用的模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。结构图上图摘自http://www.tutorialspoint.com/design_pattern应用场景当需要工厂类负责创建的对象比较少,并且原创 2015-08-03 14:02:19 · 841 阅读 · 0 评论 -
过滤器模式-Filter Pattern
基本概念过滤器模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来,这种类型的设计模式属于结构型的模式,它可以组合多个标准来获得单一的标准。结构图 上图摘自http://www.tutorialspoint.com/design_pattern应用场景当你有一组对象,需要通过不同条件或条件组合来筛选出符合标准的结果时,可以使用过滤器模式。原创 2015-08-13 15:19:19 · 2468 阅读 · 0 评论 -
备忘录模式-Memento Pattern
基本概念备忘录模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到之前保存的状态。结构图上图摘自《大话设计模式》应用场景备忘录模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分,原始对象可以根据保存的备忘录信息恢复到原来的某个状态。源码示例1.创原创 2015-07-31 10:45:37 · 1020 阅读 · 0 评论 -
模板方法模式-Template Pattern
基本概念模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。也可以通俗地理解为把不变的行为移到超类,从而去除子类中的重复代码。结构图上图摘自《大话设计模式》应用场景当不可变和可变的行为同时出现在子类中时,在子类的方法中就不可避免地会重复实现那些不变的行为,这是就可以使用模板方法模原创 2015-07-30 10:25:09 · 899 阅读 · 0 评论 -
代理模式-Proxy Pattern
基本概念代理模式为其他对象提供一种代理以控制对这个对象的访问。结构图上图摘自《大话设计模式》应用场景1.远程代理,即为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。2.虚拟代理,即根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。3.安全代理,即用来控制真实对象时的权限。4.智能指引,即当调用真实对象原创 2015-07-29 10:02:17 · 815 阅读 · 0 评论 -
桥接模式-Bridge Pattern
基本概念桥接模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里的抽象与实现分离是指抽象类和它的派生类用来实现自己的对象。结构图 上图摘自《大话设计模式》应用场景实现系统如果可能有多角度分类,每一种分类都有可能变化,那么就把多角度分离出来让他们独立变化,减少他们之间的耦合。因为这种情况下如果只用继承,会造成大量的类增加,不能满足开放-封闭原则,因此需要考虑桥接模原创 2015-08-10 13:21:41 · 706 阅读 · 0 评论 -
建造者模式-Builder Pattern
基本概念建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,又叫做生成器模式。建造者模式将一个产品的内部表象与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同内部表象的产品对象。结构图上图摘自《大话设计模式》应用场景如果一个对象的创建有固定的组成和流程,如组装电脑,包括主机、显示器、键盘、鼠标等几个主要部分(示例代码就是以此为例原创 2015-07-28 12:54:28 · 849 阅读 · 0 评论 -
观察者模式-Observer Pattern
先俗气的借百科来解释一下概念:观察者模式(有时又被称为发布-订阅Subscribe>模式、模型-视图View>模式、源-收听者Listener>模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。接下来看观察者模式的类结构图:原创 2015-07-24 18:39:00 · 826 阅读 · 0 评论 -
装饰模式-Decorator Pattern
基本概念装饰模式,动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比使用子类继承父类更为灵活,装饰模式可以有效地把类的核心职责和附加功能区分开。结构图 上图摘自《大话设计模式》应用场景当需要往旧的类中添加新的方法或新的逻辑的时候,如果在主类中添加,会增加主类的复杂度;这些需要加入的东西如果仅仅是为了满足某些特定行为的需要,可以作为装饰功能来添加,从而使用装饰模式原创 2015-08-06 11:11:19 · 716 阅读 · 0 评论