何为模板方法模式

模板方法模式在一个方法中定义一个算法的骨架,而把一些步骤延迟到子类。模板方法使得子类在不改变算法结构的情况下,重新定义算法中的某些步骤

模板方法模式属于行为型模式,其对应的类图如下所示。

template_pattern_uml_diagram

图片来源于 HeadFirst 设计模式。

>
Java设计模式

何为生成器模式

生成器模式(Builder Pattern)用于封转一个产品的构造过程,并允许按步骤构造。

主要解决在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。

>
Java设计模式

何为外观模式

外观(门面)模式为子系统中的一组接口提供了一个统一的接口。外观模式定义了一个更高级别的接口,使得子系统他那个更加容易使用。但外观模式不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

外观模式的作用:

  • 松散耦合,外观模式松散了客户端与子系统的耦合关系,让子系统内部的模块能更容易扩展和维护。
  • 简单易用,外观模式让子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟门面类交互就可以了。
  • 更好的划分访问层次-通过合理使用 Facade,可以帮助我们更好地划分访问的层次。有些方法是对系统外的,有些方法是系统内部使用的。把需要暴露给外部的功能集中到门面中,这样既方便客户端使用,也很好地隐藏了内部的细节。
>
Java设计模式

何为迭代器模式

迭代器模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式是一种行为型设计模式,在 Java 的集合框架中使用到迭代器(Iterator)来遍历集合中的元素。

但是,迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。

迭代器模式的类图如下所示。

> >
Java设计模式

何为代理设计模式

代理设计模式就是提供一个替身(代理者)或者占位符来控制对这个对象的访问。 使用代理模式创建代表对象。代表对象控制这另一个对象的访问,被代表的对象可以是远程的对象、创建开销大的对象或需要安全控制的对象。

代理模式的类图如下。

代理模式是在生活中特别常见,比如玩的跑跑卡丁车国服版本是由世纪天成公司代理的,世纪天成可以在原有跑跑卡丁车的基础上新加一些属于自己的功能,比如未成年人游戏时长限制控制、游戏内部的广告牌打广告、还有游戏中的默认车牌都显示“世纪天成”字样等等。

>
Java设计模式

何为装饰器模式

装饰器模式动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活,同时又不会改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

装饰设计模式可代替继承。

装饰模式类图

>
Java设计模式