![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java设计模式
tanwenfang
学无止境。
展开
-
迭代器模式
1,定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 2,类图及角色介绍。 Aggregate:聚合接口,有一个createIterator()接口方法,所有的具体聚合类都实现这个接口并实现接口方法; ConcreteAggregate:具体聚合类,持有一个对象的集合,实现createIterator()方法,利用此方法返回集合的具体迭代器; Iterato原创 2018-02-03 11:59:52 · 161 阅读 · 0 评论 -
组合模式
定义:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。类图: 一个小例子 (1)创建组合迭代器/** * 迭代器,遍历组件中的菜单项,而且确保所有的子菜单(以及子子菜单)都被包括进来 */public class CompositeIterator implements Iterator<MenuComponen...原创 2018-03-24 21:16:38 · 179 阅读 · 0 评论 -
装饰者模式
1,定义:将任务动态加载到对象上。 2,示意图 3,角色 1. Component:抽象超类,所有的装饰者和被装饰者都继承这个抽象类,以达到类型匹配; 2. concreteComponent:被装饰者; 3. Decorator:装饰者基类,所有的具体装饰者都实现这个抽象类; 4. concreteDecorator:具体装饰者,继承装饰者基类,有一个指向抽象组件的comp原创 2017-12-14 16:57:58 · 134 阅读 · 0 评论 -
适配器模式
定义:将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。引用Head First设计模式上的场景:客户一直和Duck接口(目标接口)打交道,会用到一些Duck对象,如果Duck对象不够,就拿一些Turkey对象来凑。但是客户不能直接使用Turkey对象,需要转换一下,变成一个看起来像Duck的Turkey。一个小例子: (1)创建一个Target接口Duck.ja原创 2017-12-22 10:04:02 · 146 阅读 · 0 评论 -
工厂方法模式
定义:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到子类。工厂方法模式的4个成员: (1)抽象创建者类(AbstractCreator):定义了一个抽象工厂方法(抽象创建者通常会包含依赖于抽象产品的代码,而这些抽象产品由子类创建),所有具体创建者类都必须继承这个抽象创建者,并实现抽象工厂方法; (2)具体创建者类(ConcreteCreator):继承了抽原创 2017-12-26 10:23:16 · 311 阅读 · 0 评论 -
观察者模式
一,定义 观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的依赖者会收到通知并自动更新。 二,角色介绍 (1)抽象主题接口:所有具体主题类都要实现这个接口; (2)具体主题类:实现抽象主题接口,可以有多个; (3)抽象观察者接口:有一个update()方法,同一具体主题类的所有具体观察者都要实现这个接口; (4)具体观察者接口:持有抽象主题类的引用,实现抽象观原创 2018-01-22 08:38:20 · 131 阅读 · 0 评论 -
单件模式
一,定义 确保一个类只有一个实例,并提供一个全局访问点。二,各种单件类 (1)经典单件类/** * 经典单例类(不是线程安全的) */public class Singleton { // 利用一个静态变量记录Singleton的唯一实例 private static Singleton uniqueInstance; // 把构造器声明为私有的,只有Si原创 2018-01-27 13:08:47 · 318 阅读 · 0 评论 -
命令模式
一,定义 将请求封装成对象,以便使用不同的请求,队列或日志来参数化其他对象。命令模式也支持可撤销的操作。二,角色 (1)动作的调用者Invoker:发起请求的对象,持有命令对象接口的引用,和命令对象交互; (2)动作的接收者Receiver:接收请求的对象,并做出反映,和命令对象交互; (3)命令对象接口Command:为所有命令对象声明了一个接口,调用命令对象的execute()方法原创 2018-01-27 14:48:43 · 145 阅读 · 0 评论 -
模板方法模式
一,定义 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 二,角色 (1)主类:是一个抽象类,定义了模板方法,还定义了一些需要在子类中实现的抽象方法。 (2)子类:具体类,继承自主类,实现了模板方法中的抽象方法。 三,类图 四,一个小例子 (1)创建一个带模板方法的抽象类/** * 带模板方原创 2018-01-27 15:41:18 · 131 阅读 · 0 评论 -
状态模式
定义 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 (这个模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,看起来好像修改了它的类。从客户角度来说,如果说你使用的对象能够完全改变它的行为,那么你会觉得,这个对象实际上是从别的类实例化而来的。然而实际上,你知道我们是在使用组合通过简单引用不同的状态对象来造成类改变的假象)类图 一个小例子(来自四巨头的设...原创 2018-03-25 12:24:15 · 168 阅读 · 0 评论