设计模式
jeffry_xu
开源软件天梯(tianti)作者。http://www.oschina.net/p/tianti。
展开
-
设计模式(一)工厂模式(创建型)
简单工厂模式 一个抽象产品类,可以派生出多个具体产品类; 一个具体工厂类,可以创建多个具体产品的实例。 抽象产品类定义public abstract class Sender { void send(){ };} 具体产品类定义 邮件产品类public class MailSender ex原创 2016-09-27 15:10:23 · 403 阅读 · 0 评论 -
设计模式(五)适配器模式(结构型)
定义:把一个类的接口变换为客户端所期待的另一种接口,使原本因接口不兼容而无法在一起工作的两个类能够在一起工作。 分类: 类适配器模式:把适配的类的API转换成目标类的API。(继承需要适配的类) 对象适配器模式:把适配的类的API转换成目标类的API。(委派需要适配的类) 组成: 目标(Target)角色:所期待得到的结果,目标接口原创 2016-10-25 14:54:05 · 400 阅读 · 0 评论 -
设计模式(六)外观模式
定义:为子系统中的一组接口提供一个一致的界面。定义一个高层接口,使得这一子系统更加容易使用。 使用场景:子系统交互复杂,建立外观模式可以屏蔽系统间的通信实现,客户端调用简单、透明。 结构: 外观(Facade)角色:被客户端调用,可以访问各子系统的功能。 子系统(SubSystem)角色:实现子系统的功能,处理Facade指派的任务原创 2016-10-25 15:52:47 · 374 阅读 · 0 评论 -
设计模式(二)单例模式(创建型)
使用场景: 一个类只能创建一个实例对象。如读取服务器配置文件的类,由单个实例对象直接读取。实现流程: (1)、定义一个私有变量; (2)、将构造函数私有化; (3)、提供一个获取实例的公用方法; 下面列出几种常见的实现模式,仅供参考: 饿汉式单例:在类创建的时候就初始化实例对象,每次调用的时候都原创 2016-09-29 14:52:42 · 377 阅读 · 0 评论 -
设计模式(三)建造者模式(创建型)
定义:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。使用场景: 创建的产品有复杂的内部结构,且创建的产品有较多的共同点,其组成部分相似。隔离复杂对象的创建,使得相同的过程可以创建不同的产品。 与抽象工厂的区别: 在建造者模式里,有个指导者,由指导者来管理创造者,用户是与指导者联系的,指导者联系创建者得到最后的产品。原创 2016-09-29 17:50:35 · 469 阅读 · 0 评论 -
设计模式(四)原型模式(创建型)
定义:通过拷贝一个已经存在的实例来返回新的实例,而不是新建实例。被拷贝的实例就称为原型。类图原型类实现思路 (1)实现Cloneable接口。(在Java虚拟机中,只有实现了这个接口的类才可以被拷贝。) (2)重写Object类中的clone方法。(作用是返回对象的一个拷贝,但其作用域是protected,要修改成public。) 原型模式中的拷贝分为“浅拷贝”和“原创 2016-09-30 10:49:56 · 403 阅读 · 0 评论 -
设计模式(七)代理模式
定义:为其他对象提供一种代理(中介),以控制这个对象的访问。对这个对象进行访问控制的一个原因是为了只有我们确实需要这个对象时才对它进行创建和初始化。 使用场景: 1、延迟加载。如果一个对象并不是在任何场景都需要,且这个对象的创建需要消耗不少资源。 2、对原有对象方法的增强。这些加强可能是一些日志操作,基于设计模式开闭原则的考虑,这些加强不可能放到原有真实类里面,所以就新增了一个代原创 2016-12-22 10:44:27 · 476 阅读 · 0 评论 -
设计模式(八)观察者模式
定义:又称发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。 使用场景: 当一个对象的改变需要通知其他对象时,且不知道有多少个对象需要等待改变。 结构: 抽象主题角色:把所有观察者对象的引用保存在一个集合中,每个抽象主题原创 2016-12-22 14:52:05 · 379 阅读 · 0 评论 -
设计模式(九)模板方法模式
定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以在不改变一个算法的结构即可重新定义该算法的某些特定步骤。 结构: 模板抽象类:在抽象类中定义了一系列基本操作,这些基本操作可以是具体的,也可以是抽象的。其子类可以重定义或实现这些基本操作。同时,抽象类中实现了一个模板方法,用于定义一个算法的框架。模板方法可以调用抽象类中的基本方法。模板方法原创 2016-12-22 17:51:10 · 463 阅读 · 0 评论