1. 简介
在本文中,我们重点介绍Java中的结构型设计模式,并讨论它们是什么以及它们之间的一些根本区别。
2. 结构型设计模式
根据四人帮(GoF),设计模式可以分为三种类型:
- 创建型
- 结构型
- 行为型
简单地说,结构型模式处理类和对象的组合。它们提供了使用对象组合和继承来创建某种抽象的不同方式。
3. 代理模式
通过这种模式,我们创建了一个中介,充当另一个资源(例如文件、连接)的接口。这种辅助访问为实际组件提供了代理,并保护它免受底层复杂性的影响。
有关该模式的详细示例,请查看专门的帖子:Java中的代理模式。
区分要点:
- 代理提供与它持有引用的对象相同的接口,并且它不以任何方式修改数据;它与适配器和装饰者模式形成对比,它们分别改变和装饰预先存在的实例的功能
- 代理通常在编译时本身拥有关于真实对象的信息,而装饰者和适配器在运行时被注入,只知道实际对象的接口
4. 装饰者模式
此模式对于增强对象的行为非常有用,有关详细概述,请查看此处的重点教程:Java中的装饰器模式
区分要点:
- 尽管代理模式和装饰器模式具有相似的结构,但它们的意图不同;虽然代理的主要目的是促进易用性或受控访问,但装饰者附加了额外的责任
- 代理和适配器模式都持有对原始对象的引用
- 这个模式中的所有装饰器都可以递归使用,无限次,这在其他模型中是不可能的
5. 适配器模式
适配器模式用于连接两个不兼容的接口,否则无法直接连接。适配器使用新接口包装现有类,以便它与所需的接口兼容。
详细的描述和实现可以查看专门的帖子:Java中的适配器模式。
适配器和代理模式之间的主要区别是:
- 虽然代理提供相同的接口,但适配器提供与其客户端兼容的不同接口
- 适配器模式是在应用程序组件设计完成后使用的,这样我们就可以在不修改源代码的情况下使用它们,这与在设计组件之前使用的桥接模式形成对比。
6. 桥接模式
桥接模式用于将抽象与其实现解耦,以便两者可以独立变化。
这意味着创建一个桥接接口,该接口使用OOP原则将职责分离到不同的抽象类中。
详细的描述和实现可以查看专门的帖子:Java中的桥接模式
区分要点:
- 桥接模式只能在设计应用程序之前实现
- 允许抽象和实现独立更改,而适配器模式使不兼容的类可以协同工作
7. 总结
在本文中,我们重点介绍了结构型设计模式及其某些类型之间的差异。
与往常一样,本教程的完整源代码可在GitHub上获得。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章