常见的设计模式包括:
- 工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪个类。
- 单例模式:确保一个类只有一个实例,并提供一个全局访问点。
- 观察者模式:定义一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并自动更新。
- 代理模式:为其他对象提供一种代理以控制对这个对象的访问。
- 装饰器模式:动态地将责任附加到对象上,若要扩展功能,装饰器提供了比继承更有弹性的替代方案。
- 策略模式:定义一系列算法,将它们一个个封装起来,并且使它们可以相互替换。
- 模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
- 迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。
装饰模式是一种结构型模式,它通过包装一个已有的对象,来扩展其功能或者修改其行为。常见的应用场景包括:动态地给对象增加一些额外的职责;不影响其他对象的情况下,以透明的方式动态地给对象添加功能;需要动态地撤销或者取消对象的某些职责等。在Java中,IO库中的各种流就是使用了装饰器模式。例如,可以通过将输入流和输出流按照需要的顺序进行组合,来实现各种不同的读写操作。