代理、适配器、桥接、外观、装饰 - 结构型模式与代理模式探究

1 下载量 149 浏览量 更新于2023-12-07 收藏 1.09MB PDF 举报
结构型模式是一种设计模式,它描述了如何将类或对象按照某种布局组成更大的结构。在结构型模式中,分为类结构型模式和对象结构型模式两种。类结构型模式采用继承机制组织接口和类,而对象结构型模式采用组合或聚合组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,因此对象结构型模式比类结构型模式具有更大的灵活性。总共有7种结构型模式,分别是代理模式、适配器模式、装饰者模式、桥接模式、外观模式、组合模式和享元模式。 代理模式是结构型模式中的一种,它是为某个对象提供一个代理以控制对该对象的访问。在代理模式中,访问对象不适合或不能直接引用目标对象,因此代理对象作为访问对象和目标对象之间的中介。在Java中,代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理在编译期就生成,而动态代理在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。 代理模式包括三种角色:抽象主题(Subject)类、真实主题(Real Subject)类和代理类。抽象主题类通过接口或抽象类声明真实主题和代理对象实现的业务方法。真实主题类实现了抽象主题中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。而代理类则通过实现抽象主题接口,对真实主题类的方法进行封装和控制。 适配器模式是另一种结构型模式,它用于将一个类的接口转换为客户希望的另一个接口。适配器模式可以让原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式包括目标接口、适配器和被适配者三种角色。目标接口定义客户所需的接口,适配器通过实现目标接口,并包含被适配者的实例来实现客户所需的接口,而被适配者则是所要适配的类。 装饰者模式是一种结构型模式,它允许动态地给一个对象添加一些额外的职责。装饰者模式通过将对象放入装饰者对象中,然后再将装饰者对象放入其他装饰者对象中来实现对原对象的功能进行动态扩展。装饰者模式包括抽象构件、具体构件、抽象装饰者和具体装饰者四种角色。 桥接模式是一种结构型模式,它将抽象和实现分离,使它们可以独立变化。桥接模式包括抽象类、实现类、抽象实现类和具体实现类四种角色。外观模式是一种结构型模式,它为子系统的一组接口提供一个更高级的统一接口。外观模式包括外观角色、子系统角色和子系统实现类三种角色。组合模式是一种结构型模式,它将对象组合成树形结构以表示部分-整体的层次结构。组合模式包括抽象构件、树叶构件和树枝构件三种角色。享元模式是一种结构型模式,它通过共享技术有效地支持大量的细粒度对象。享元模式包括享元角色、具体享元角色和非共享享元角色三种角色。 总之,结构型模式是一种设计模式,它描述了如何将类或对象按照某种布局组成更大的结构。代理模式、适配器模式、装饰者模式、桥接模式、外观模式、组合模式和享元模式是结构型模式中的七种模式,每种都有不同的角色和结构,用于解决不同的设计问题。结构型模式的应用可以帮助开发人员更好地管理和组织类和对象之间的关系,增强代码的可维护性和扩展性,提高系统的灵活性和可重用性。