二十三种设计模式全面解析-组合模式与享元模式的结合应用:实现对象的共享和高效管理

简介: 二十三种设计模式全面解析-组合模式与享元模式的结合应用:实现对象的共享和高效管理

在前文中,我们介绍了组合模式的基本原理和应用,以及它在构建对象结构中的价值和潜力。然而,组合模式的魅力远不止于此。在本文中,我们将继续探索组合模式的进阶应用,并展示它与其他设计模式的结合使用,以构建更灵活、可扩展的对象结构。精彩的旅程即将开始!


组合模式和享元模式都是处理对象结构的重要设计模式。它们的结合应用可以实现对共享对象的高效管理,减少对象的重复创建和内存消耗。


在组合模式中,对象组合类通常持有一个子组件列表,用于管理和处理子组件。当子组件的创建和销毁操作频繁时,可能会导致大量的对象创建和销毁开销。这时,可以通过享元模式来共享相同的子组件,从而节省内存和提高性能。


让我们通过一个案例来理解组合模式和享元模式的结合应用:


import java.util.HashMap;
import java.util.Map;
interface Component {
    void operation();
}
class ConcreteComponent implements Component {
    private String name;
    public ConcreteComponent(String name) {
        this.name = name;
    }
    @Override
    public void operation() {
        System.out.println("执行具体组件 " + name + " 的操作");
    }
}
class Composite implements Component {
    private Map<String, Component> components = new HashMap<>();
    public void addComponent(String key, Component component) {
        components.put(key, component);
    }
    public void removeComponent(String key) {
        components.remove(key);
    }
    @Override
    public void operation() {
        System.out.println("执行组合对象的操作");
        for (Component component : components.values()) {
            component.operation();
        }
    }
}
class ComponentFactory {
    private static Map<String, Component> componentMap = new HashMap<>();
    public static Component getComponent(String key) {
        Component component = componentMap.get(key);
        if (component == null) {
            component = new ConcreteComponent(key);
            componentMap.put(key, component);
        }
        return component;
    }
}
public class Client {
    public static void main(String[] args) {
        Composite composite = new Composite();
        composite.addComponent("A", ComponentFactory.getComponent("A"));
        composite.addComponent("B", ComponentFactory.getComponent("B"));
        composite.addComponent("C", ComponentFactory.getComponent("C"));
        composite.addComponent("A", ComponentFactory.getComponent("A"));
        composite.operation();
        // 输出:
        // 执行组合对象的操作
        // 执行具体组件 A 的操作
        // 执行具体组件 B 的操作
        // 执行具体组件 C 的操作
    }
}


在上述代码中,我们引入了一个ComponentFactory工厂类,用于创建和管理具体组件对象。当需要获取组件时,首先在工厂类中查找是否已经存在该组件,如果存在则返回共享的组件实例,否则创建一个新的组件实例并进行共享。


总结:

通过组合模式和享元模式的结合应用,我们可以实现对共享对象的高效管理,减少了对象的重复创建和内存消耗。这种方式特别适用于需要频繁创建和销毁的对象组件场景,提高了系统的性能和资源利用率。


然而,组合模式的进阶应用和与其他设计模式的结合远不止于此。下一篇博文中,我们将继续探索组合模式的更多应用场景和与其他设计模式的结合,带您进一步领略组合模式的魅力!


相关文章
|
21天前
|
设计模式 存储 缓存
【设计模式】【结构型模式】享元模式(Flyweight)
一、入门 什么是享元模式? 享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享对象来减少内存使用,特别适用于存在大量相似对象的情况。 它的核心思想是将对象的内在状态(不变
57 16
|
4天前
|
设计模式 缓存 安全
【高薪程序员必看】万字长文拆解Java并发编程!(8):设计模式-享元模式设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的经典对象复用设计模式-享元模式,废话不多说让我们直接开始。
16 0
|
3月前
|
设计模式 存储 缓存
「全网最细 + 实战源码案例」设计模式——享元模式
享元模式(Flyweight Pattern)是一种结构型设计模式,旨在减少大量相似对象的内存消耗。通过分离对象的内部状态(可共享、不变)和外部状态(依赖环境、变化),它有效减少了内存使用。适用于存在大量相似对象且需节省内存的场景。模式优点包括节省内存和提高性能,但会增加系统复杂性。实现时需将对象成员变量拆分为内在和外在状态,并通过工厂类管理享元对象。
208 92
|
2月前
|
设计模式 SQL Java
【再谈设计模式】解释器模式~语法的解析执行者
解释器模式定义了一种语言的语法表示,并定义一个解释器来解释该语言中的句子。它使用类来表示每个语法规则,并且通过递归调用这些类的方法来解释表达式。本质上,它将一个复杂的表达式分解为一系列简单的部分,然后按照特定的语法规则进行解析和执行。
76 8
|
5月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
5月前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是"将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为5种:单例模式、工厂方法模式抽象工厂式、原型模式、建造者模式。
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
5月前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
5月前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
5月前
|
设计模式 Java 程序员
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则
本系列文章聚焦于面向对象软件设计中的设计模式,旨在帮助开发人员掌握23种经典设计模式及其应用。内容分为三大部分:第一部分介绍设计模式的概念、UML图和软件设计原则;第二部分详细讲解创建型、结构型和行为型模式,并配以代码示例;第三部分通过自定义Spring的IOC功能综合案例,展示如何将常用设计模式应用于实际项目中。通过学习这些内容,读者可以提升编程能力,提高代码的可维护性和复用性。
1002 1
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则
|
6月前
|
设计模式 开发者 Python
Python编程中的设计模式应用与实践感悟####
本文作为一篇技术性文章,旨在深入探讨Python编程中设计模式的应用价值与实践心得。在快速迭代的软件开发领域,设计模式如同导航灯塔,指引开发者构建高效、可维护的软件架构。本文将通过具体案例,展现设计模式如何在实际项目中解决复杂问题,提升代码质量,并分享个人在实践过程中的体会与感悟。 ####

推荐镜像

更多