您的位置:首页 > 房产 > 家装 > 推广网上国网有什么好处_芜湖网站建设_网站排名优化化快排优化_网络推广公司哪家好

推广网上国网有什么好处_芜湖网站建设_网站排名优化化快排优化_网络推广公司哪家好

2025/2/23 17:40:50 来源:https://blog.csdn.net/weixin_41645817/article/details/145736433  浏览:    关键词:推广网上国网有什么好处_芜湖网站建设_网站排名优化化快排优化_网络推广公司哪家好
推广网上国网有什么好处_芜湖网站建设_网站排名优化化快排优化_网络推广公司哪家好

桥接模式

定义

        将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式通过聚合关系代替继承关系,实现抽象化和实现化部分的解耦。

类图

角色

  • Abstraction(抽象类):用于定义抽象的接口,它一般是抽象类而不是接口,其中定义了一个Implementor(实现类接口)类型的对象并可以维护该对象,它与Implementor 之间具有关联关系。

  • RefinedAbstraction(提炼抽象类):扩充由Abstraction 定义的接口,通常情况下它不再是抽象类而是具体类,他实现了在Abstraction 中声明的抽象业务方法,在RefinedAbstraction 中可以调用在 Implementor 中定义的业务方法

  • Implementor(实现类接口):定义实现类的接口,这个接口不一定要与Abstraction 的接口完全一致,事实上这两个接口可以完全不同。一般而言,Implementor 接口仅提供基本操作,而 Abstraction 定义的接口可能会做更多复杂的操作。Implementor 接口对这些基本操作进行了声明,而具体实现交给其子类。通过关联关系,在Abstraction 中不仅拥有自己的方法,还可以调用到 Implementor 中定义的方法,使用关联关系来替代继承关系。

  • ConcreteImplementor(具体实现类):具体实现Implementor 接口,在不同的 ConcreteImplementor 中提供基本操作的不同实现,在程序运行时,ConcreteImplementor 对象将替换其父类对象,提供给抽象类具体的业务操作方法。

优缺点

  • 优点

    • 实现抽象和实现的分离。

    • 桥接模式提高了系统的可扩充性,在两个变化维度中任意拓展一个维度,都不需要修改原有系统。

    • 桥接模式有时类似于多继承方案,但是多继承方案违背了类的单一职责原则,复用性比较差,而且多继承结构中类的个数非常庞大,桥接模式是比多继承方案更好的解决方法。

  • 缺点

    • 桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

    • 桥接模式要求正确识别出系统中两个独立变化的纬度,因此其使用范围具有一定的局限性。

使用场景

  • 一个类存在两个独立变化的维度,且这两个维度都需要进行拓展

  • 如果一个系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承关系,通过桥接模式可以使它们在抽象建立一个关联关系

  • 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用

使用案例

  • JDBC和桥接模式

享元模式

定义

  • 为运用共享技术有效地支持大量细粒度的对象。

  • 在享元模式中可以共享的相同内容称为内部状态,而那些需要外部环境来设置的不能共享的内容称为外部状态。外部状态和内部状态是相互独立的,外部状态的变化不会引起内部状态的变化。由于区分了内部状态和外部状态,因此可以通过设置不同的外部状态使得相同的对象可以具有一些不同的特征,而相同的内部状态是可以共享的。

  • 享元模式的本质是分离与共享:分离变与不变,并且共享不变;把一个对象的状态分成内部状态和外部状态,内部状态即是不变的,外部状态是变化的;然后通过共享不变的部分,达到减少对象数量并节约内存的目的;

作用

  • 考虑系统性能的设计模式,通过使用享元模式可以节约内存空间,提高系统的性能;

  • 享元模式的核心在于享元工厂类,享元工厂的作用在于提供一个用于存储享元对象的享元池,用户需要对象时,首先从享元池中获取,如果享元池不存在,则创建一个新的享元对象返回给用户,并在享元池中保存该新增对象;

类图

角色

  • Flyweight: 享元接口,通过这个接口传入外部状态并作用于外部状态

  • ConcreteFlyweight: 具体的享元实现对象,必须是可共享的,需要封装享元对象的内部状态

  • UnsharedConcreteFlyweight: 非共享的享元实现对象,并不是所有的享元对象都可以共享,非共享的享元对象通常是享元对象的组合对象;

  • FlyweightFactory: 享元工厂,主要用来创建并管理共享的享元对象,并对外提供访问共享享元的接口

优缺点

  • 优点
    • 它可以极大减少内存中对象的数量,使得相同对象或相似对象在内存中只保存一份
    • 享元模式的外部状态相对独立,而且不会影响其内部状态,从而使得享元对象可以在不同的环境中被共享
  • 缺点
    • 享元模式使得系统更加复杂,需要分离出内部状态和外部状态,这使得程序的逻辑复杂化
    • 为了使对象可以共享,享元模式需要将享元对象的状态外部化,而读取外部状态使得运行时间变长

使用案例

1. JDK类库中定义的String 类是使用享元模式的典型

2. Integer 中的享元模式 目标值在-128~127 则从缓存中取值

3. Long 中的享元模式

使用场景

  • 一个系统有大量相同或相似的对象,由于这类对象的大量使用,造成内存的大量耗费;

  • 对象的大部分状态可以外部化,可以将这些外部状态传入对象中(细粒度对象)

  • 使用享元模式需要维护一个存储享元对象的享元池,而这需要耗费资源,因此,应当在多次重复使用享元对象时才值得使用享元模式;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com