不变模式 Immutable | 在对象构造好之后,不允许改变对象的内容。使用最广泛的不变类就是String。无论是ToUpper还是Substring还是运算符重载+=,都是新建了一个字符串,并重新将该字符串的引用添加到原来的变量上。 Long, Integer, Float, Double都是不变类,对其任何操作都不会改变其内部属性,而是返回一个新对象。 |
策略模式 Strategy | 目的:封装一系列算法,并使它们可以相互替换。 例:一个薪水计算系统,临时工实行周薪制,普通员工实行月薪制,高层管理人员实行年薪制。 当实现算法时需要大量的条件转移语句,就应该考虑该模式。 |
状态模式 State | 用于工作流等角色需要多个状态,并需要变化的情况下。每一个状态的子类只需要一个实例,即每一个状态子类是一个单例。 |
模版方法模式 Template Method | 最常用的设计模式之一。模版方法定义在抽象类中,把基本方法组合在一起形成一个总算法。基本方法由子类实现。设计理念是尽量减少必须由子类重载的基本方法的数目。 |
观察者模式 Observer | 常用于界面和底层程序,底层程序将计算结果主动通知给界面,使界面可以即时的进行相关处理。例如底层接收消息,通知界面,使界面可以将消息内容显示出来。 Java语言提供了对观察者模式的支持。 |
迭代器模式 Iterator | 提供一种顺序访问一个集合中的元素的方法而不用暴露集合的内部表示。 Java集合本身就支持迭代器模式。 |
命令模式 Command | 广泛应用于视窗系统如文字或图像编辑系统。把来自界面的命令封装到一个对象中。目的是将发出命令的责任和执行命令的责任分开。 |
调停者模式 Mediator | 又叫中介者模式,与FACADE模式类似,FACADE模式从上面施加策略,面向用户。而Mediator模式从下面施加策略,用户不必知晓。 |
访问者模式 Visitor | 访问者模式允许在不更改现有类层次结构的情况下向其中增加新的功能。 常见应用:遍历数据结构并生成各种报表。 注意点: 1. 数据结构类应该是稳定的不易改变的,否则一旦有更改,所有的访问者类都要修改。 2.一个访问者必须访问数据结构中的每一个元素,通常由数据类负责迭代并进行。 如下图,访问者模式如同一个功能矩阵,矩阵的一条轴是不同类型的数据,另一条轴是不同类型的报表(访问者),矩阵的每一个单元都被一项功能填充,该功能描绘了如何使用特定的数据生成特定的报表。 |
我的设计模式速查手册(三)
最新推荐文章于 2024-05-18 10:00:00 发布