Java23种设计模式-结构型模式之组合模式

这篇具有很好参考价值的文章主要介绍了Java23种设计模式-结构型模式之组合模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

组合模式(Composite Pattern):将对象组合成树状结构以表示“部分-整体”层次结构,同时保持对单个对象和组合对象的一致性操作,主要目的是简化客户端代码,因为它可以统一处理单个对象和组合对象。

通常包含以下几个角色:
角色1.抽象组件(Component):声明了组合对象和叶子对象的公共接口,让客户端可以统一处理
角色2.叶子对象(Leaf):实现抽象组件接口表示树结构中的叶节点,不包含子组件。
角色3.组合对象(Composite)也实现抽象组件接口,包含并管理子组件实现树结构中的分支节点
角色4.客户端(Client):通过抽象组件接口来操作叶子对象和组合对象

优点
1.清晰的结构:能清晰地表达对象的组合关系。
2.一致性处理:可以一致地处理单个对象和组合对象。
3.方便扩展:便于添加新的组件或子组件。
4.安全性:封装了组件的内部结构,提高了安全性。

缺点
1.设计复杂:组合模式的设计相对复杂,需要考虑对象的层次结构和组合关系。
2.理解难度增加:对于不熟悉该模式的开发者来说,理解和使用可能会有一定难度。
3.灵活性受限:由于组合模式的实现方式较为固定,可能会限制一些特殊的需求。
4.性能影响:在处理大型树状结构时,可能会导致性能问题。

应用场景如下:
文件和目录管理:如文件系统中的文件和文件夹。
组织结构:例如公司的部门和员工层次结构。
图形界面:窗口、控件等的组合。
树状数据结构:如二叉树等。

示例Component 是抽象组件接口,定义了组合模式需要的操作。Leaf 是叶子对象,它实现了 Component 接口。Composite 是组合对象,它也实现了 Component 接口,并管理一组子组件。Client 类展示了如何使用组合模式,它创建了一个组合对象和一个叶子对象,并将叶子对象添加到组合对象中。客户端可以统一调用 operation() 方法,无论是对单个叶子对象还是组合对象文章来源地址https://www.toymoban.com/news/detail-858385.html

// 抽象组件接口
public interface Component {
    void operation();
}
// 叶子对象
public class Leaf implements Component{
    @Override
    public void operation() {
        System.out.println("Leaf is performing operation.");
    }
}
// 组合对象
public class Composite implements Component{
    private List<Component> children = new ArrayList<>();

    public void add(Component component){
        children.add(component);
    }

    public void remove(Component component){
        children.remove(component);
    }

    @Override
    public void operation() {
        for (Component child : children) {
            child.operation();
        }
    }
}

// 客户端
public class Client {
    public static void main(String[] args) {
        Component leaf1= new Leaf();
        Component leaf2=new Leaf();
        Composite composite = new Composite();

        composite.add(leaf1);
        composite.add(leaf2);
        composite.remove(leaf1);

        // 统一处理
        composite.operation();
    }
}

到了这里,关于Java23种设计模式-结构型模式之组合模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【地铁上的设计模式】--结构型模式:组合模式

    什么是组合模式 组合模式是一种结构型设计模式,将对象组合成树形结构,以表示部分整体的层次结构,让用户对单个对象和组合对象的使用具有一致性。 在组合模式中,抽象构件定义了一个统一的接口,用于管理所有对象,叶子节点和组合节点都实现了该接口。叶子节点

    2024年02月02日
    浏览(41)
  • 【Java 设计模式】结构型之代理模式

    代理模式(Proxy Pattern)是一种结构型设计模式, 它允许通过一个代理对象控制对其他对象的访问 。代理模式在访问对象时引入了一定程度的间接性,使得可以在访问对象前后进行一些额外的操作。在本文中,我们将深入研究Java中代理模式的定义、结构、使用场景以及如何在

    2024年01月21日
    浏览(48)
  • 【Java 设计模式】结构型之桥接模式

    桥接模式(Bridge Pattern)是一种结构型设计模式, 它将抽象部分与实现部分分离,使它们可以独立变化,从而降低它们之间的耦合 。桥接模式通过将抽象部分和实现部分分离,使得它们可以独立地变化,同时在它们之间建立一个桥梁。在本文中,我们将介绍 Java 中桥接模式的

    2024年01月19日
    浏览(45)
  • Java学习——设计模式——结构型模式2

    结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能,但结构型模式不仅仅简单地使用继承,而更多地通过组合与运行期的动态组合来实现更灵活的功能。 包括: 1、适配器 2、桥接 3、组合 4、装

    2024年02月03日
    浏览(45)
  • 【Java 设计模式】结构型之外观模式

    外观模式(Facade Pattern)是一种结构型设计模式, 它为复杂系统提供了一个简化的接口,隐藏了系统的复杂性,使得客户端更容易使用系统 。外观模式通过创建一个包装类(外观类),将系统的复杂性封装起来,对客户端提供一个简单的接口。在本文中,我们将深入研究Ja

    2024年01月21日
    浏览(44)
  • 【十】设计模式~~~结构型模式~~~享元模式(Java)

    【学习难度:★★★★☆,使用频率:★☆☆☆☆】         面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。 享元模式正是为解决这一类问题

    2024年02月08日
    浏览(50)
  • Java设计模式-结构型-适配器模式

    ​ 与电源适配器相似,在适配器模式中引入了一个被称为适配器(Adapter)的包装类,而它所包装的对象称为适配者(Adaptee),即被适配的类。适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用。也就是说:当客户类调用适配器的方法时,在适配器类的内部将调用

    2024年02月20日
    浏览(56)
  • 【Java 设计模式】结构型之享元模式

    享元模式(Flyweight Pattern)是一种结构型设计模式,它旨在减少对象的数量以节省内存和提高性能。享元模式通过共享大量相似对象的状态,使得这些对象可以共享,而不需要在每个对象中都存储相同的数据。在本文中,我们将深入研究Java中享元模式的定义、结构、使用场景

    2024年01月22日
    浏览(53)
  • 【Java 设计模式】结构型之适配器模式

    适配器模式(Adapter Pattern)是一种结构型设计模式, 用于将一个类的接口转换成客户端期望的另一个接口 。这种模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。在本文中,我们将介绍 Java 中适配器模式的定义、结构、使用场景以及如何在实际开发中应用。

    2024年01月19日
    浏览(45)
  • Java设计模式之结构型-桥接模式(UML类图+案例分析)

    目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 4.1、支付方式 4.2、支付渠道  五、总结 桥接模式(Bridge Pattern)是一种结构型设计模式,其主要目的是“将抽象部分与实现部分分离,使它们都可以独立地变化”。 桥接模式的核心思想是把抽象(abstraction)与实现

    2024年02月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包