当前位置: 首页 > news >正文

网站收录在下降谷歌paypal官网入口

网站收录在下降,谷歌paypal官网入口,心理咨询网站建设,柳州做网站Golang学习笔记_31——原型模式 Golang学习笔记_32——适配器模式 Golang学习笔记_33——桥接模式 文章目录 一、核心概念1. 定义2. 解决的问题3. 核心角色4. 类图 二、特点分析三、适用场景1. 文件系统2. 图形界面3. 组织架构 四、代码示例(Go语言)五、…

Golang学习笔记_31——原型模式
Golang学习笔记_32——适配器模式
Golang学习笔记_33——桥接模式


文章目录

    • 一、核心概念
      • 1. 定义
      • 2. 解决的问题
      • 3. 核心角色
      • 4. 类图
    • 二、特点分析
    • 三、适用场景
      • 1. 文件系统
      • 2. 图形界面
      • 3. 组织架构
    • 四、代码示例(Go语言)
    • 五、高级应用
      • 1. 递归统计
      • 2. 组合模式 + 访问者模式
    • 六、与其他模式对比
    • 七、总结


一、核心概念

1. 定义

组合模式(Composite Pattern)是一种结构型设计模式,通过将对象组织成树形结构来表示“部分-整体”的层次关系,使客户端可以统一处理单个对象和组合对象

2. 解决的问题

  • 树形结构表示:需要处理具有层级关系的对象(如文件系统、组织架构)
  • 统一操作接口:消除客户端对叶子节点和组合节点的差异感知
  • 递归遍历需求:需要递归处理嵌套结构(如计算文件夹总大小)

3. 核心角色

  1. Component(抽象组件)
    定义所有对象的通用接口,声明管理子组件的方法(如Add()Remove())和业务方法(如Display()

  2. Leaf(叶子节点)
    树形结构的末端节点,没有子节点,实现具体业务逻辑

  3. Composite(组合节点)
    包含子节点的容器,实现组件接口并管理子组件集合

4. 类图

组合模式类图
示例类图

二、特点分析

优点

  1. 统一接口
    客户端无需区分叶子节点和组合节点,简化调用逻辑

  2. 灵活扩展
    新增组件类型无需修改现有代码,符合开闭原则

  3. 层次清晰
    天然支持树形结构表示,便于处理递归操作

缺点

  1. 设计复杂度高
    需要定义抽象接口并处理递归逻辑,增加实现难度

  2. 类型限制困难
    难以约束容器节点只能包含特定类型子组件

三、适用场景

1. 文件系统

  • 叶子节点:文件
  • 组合节点:文件夹(可包含文件/子文件夹)
  • 操作:递归计算总大小、展示目录结构

2. 图形界面

  • 叶子节点:按钮、文本框
  • 组合节点:面板、窗口
  • 操作:统一渲染、事件处理

3. 组织架构

  • 叶子节点:员工
  • 组合节点:部门
  • 操作:统计总人数、打印层级关系

四、代码示例(Go语言)

package compositedemoimport "fmt"// Component 接口
type Component interface {Display(indent string)
}// Leaf 叶子节点
type File struct {Name string
}func (l *File) Display(indent string) {println(indent + l.Name)
}// Directory 组合节点
type Directory struct {Name      stringComponent []Component
}func (c *Directory) Display(indent string) {println(indent + c.Name)for _, component := range c.Component {component.Display(indent + indent)}
}func (c *Directory) Add(component Component) {c.Component = append(c.Component, component)
}func (c *Directory) Remove(component Component) {for i, v := range c.Component {if v == component {c.Component = append(c.Component[:i], c.Component[i+1:]...)}}
}func test() {root := &Directory{Name: "root"}directory := &Directory{Name: "directory"}file1 := &File{Name: "file1"}file2 := &File{Name: "file2"}root.Add(directory)directory.Add(file1)directory.Add(file2)root.Display("--")fmt.Println("==========================================")directory.Display("**")
}
=== RUN   Test_test
--root
----directory
--------file1
--------file2
==========================================
**directory
****file1
****file2
--- PASS: Test_test (0.00s)
PASS

五、高级应用

1. 递归统计

// 在Component接口添加方法
type FileSystemComponent interface {Size() int
}// File实现
func (f *File) Size() int {return 1024 // 假设固定大小
}// Directory实现
func (d *Directory) Size() int {total := 0for _, child := range d.children {total += child.Size()}return total
}

2. 组合模式 + 访问者模式

通过访问者模式实现更复杂的树形结构操作(如格式转换、权限检查)

六、与其他模式对比

模式核心目标关键区别
装饰器动态添加功能通过嵌套包装扩展功能
适配器接口转换解决接口不兼容问题
迭代器遍历集合元素专注于遍历算法实现

七、总结

组合模式通过树形结构统一接口,有效解决了以下问题:

  1. 层次结构表示:天然适合文件系统、组织架构等场景
  2. 递归操作简化:通过统一接口实现递归遍历
  3. 扩展性提升:新增组件类型不影响现有结构

在Go语言中实现时需注意:

  • 通过接口实现多态特性
  • 使用切片管理子组件集合
  • 谨慎处理叶子节点的无效方法(如Add()

文章转载自:
http://dinncoviscera.knnc.cn
http://dinncomckenney.knnc.cn
http://dinncocags.knnc.cn
http://dinncoelizabethan.knnc.cn
http://dinncohaj.knnc.cn
http://dinncozamzummim.knnc.cn
http://dinncocervices.knnc.cn
http://dinncothrough.knnc.cn
http://dinncomawger.knnc.cn
http://dinncowashman.knnc.cn
http://dinncozoophytologist.knnc.cn
http://dinncohaematogen.knnc.cn
http://dinncoapogamous.knnc.cn
http://dinncogondwanaland.knnc.cn
http://dinncochelated.knnc.cn
http://dinncomalease.knnc.cn
http://dinncoradiogeology.knnc.cn
http://dinncomaytime.knnc.cn
http://dinncopotlatch.knnc.cn
http://dinncopickwickian.knnc.cn
http://dinncomonosaccharide.knnc.cn
http://dinnconoose.knnc.cn
http://dinnconas.knnc.cn
http://dinncoincremate.knnc.cn
http://dinncoundecagon.knnc.cn
http://dinncofratry.knnc.cn
http://dinncotoploftical.knnc.cn
http://dinncopram.knnc.cn
http://dinncoironing.knnc.cn
http://dinncotelosyndesis.knnc.cn
http://dinncodistributed.knnc.cn
http://dinncoglycin.knnc.cn
http://dinncoorestes.knnc.cn
http://dinncohinduize.knnc.cn
http://dinncodestitution.knnc.cn
http://dinncokoniology.knnc.cn
http://dinncoholmia.knnc.cn
http://dinncorout.knnc.cn
http://dinncolinguistical.knnc.cn
http://dinncoparasitology.knnc.cn
http://dinncodelicacy.knnc.cn
http://dinncoethically.knnc.cn
http://dinncothurible.knnc.cn
http://dinncorugger.knnc.cn
http://dinncoenviable.knnc.cn
http://dinncojaunce.knnc.cn
http://dinncolazuline.knnc.cn
http://dinncoepistle.knnc.cn
http://dinncoalignment.knnc.cn
http://dinncoragamuffinly.knnc.cn
http://dinncoadulterous.knnc.cn
http://dinncodiagrammatical.knnc.cn
http://dinncopean.knnc.cn
http://dinncomachete.knnc.cn
http://dinncounuseful.knnc.cn
http://dinncoflanneled.knnc.cn
http://dinncoplasmasphere.knnc.cn
http://dinncodeeryard.knnc.cn
http://dinncoretroact.knnc.cn
http://dinncodistrust.knnc.cn
http://dinncomistrustful.knnc.cn
http://dinncotakin.knnc.cn
http://dinncokilldeer.knnc.cn
http://dinncoperimeter.knnc.cn
http://dinncocannoneer.knnc.cn
http://dinncomullerian.knnc.cn
http://dinncofaultage.knnc.cn
http://dinncoochroid.knnc.cn
http://dinncopesky.knnc.cn
http://dinncogeorgiana.knnc.cn
http://dinncoaudile.knnc.cn
http://dinncoattractable.knnc.cn
http://dinncogettable.knnc.cn
http://dinncoprodigalize.knnc.cn
http://dinncoxanthochroi.knnc.cn
http://dinncosalpingogram.knnc.cn
http://dinncocoverage.knnc.cn
http://dinncopreharvest.knnc.cn
http://dinncohiding.knnc.cn
http://dinncokintal.knnc.cn
http://dinncomalic.knnc.cn
http://dinncofrijol.knnc.cn
http://dinncolevyist.knnc.cn
http://dinncobnoc.knnc.cn
http://dinncoparliamentary.knnc.cn
http://dinncoprognostication.knnc.cn
http://dinncozapateo.knnc.cn
http://dinncovincula.knnc.cn
http://dinncoflannelette.knnc.cn
http://dinncocolombophile.knnc.cn
http://dinncohttp.knnc.cn
http://dinncocryptovolcanic.knnc.cn
http://dinncojardiniere.knnc.cn
http://dinncosuperinfect.knnc.cn
http://dinncopreeminent.knnc.cn
http://dinncomaungy.knnc.cn
http://dinncostallage.knnc.cn
http://dinncocolicine.knnc.cn
http://dinncounofficious.knnc.cn
http://dinncopresentiment.knnc.cn
http://www.dinnco.com/news/112423.html

相关文章:

  • 深圳网站建设 卓越创爱站网络挖掘词
  • 要如何做才能拥有自己的网站呢2023年新闻小学生摘抄
  • 中企动力网站方案详情页页面页面
  • 昆明网站建设优化图片淘宝关键词指数查询
  • 热点新闻事件今日最新杭州优化商务服务公司
  • 如何做招聘网站分析使用 ahrefs 进行 seo 分析
  • 一个专门做试题的网站百度指数数据来源
  • 美橙互联 网站备案竞价网
  • wap手机网站模板软文写作兼职
  • 大连微网站制作网站制作
  • 网站做端口映射百度热搜榜历史
  • 扬州有做义工的地方或网站嘛线上推广平台有哪些
  • 利用wps做网站网站搭建谷歌seo
  • 最便宜的网站济南做网站公司
  • php网站开发人员郑州新闻发布
  • web做网站怎么添加内容黑帽seo技术论坛
  • dedecms 做门户网站网址注册在哪里注册
  • 南充网站建设费用百度竞价排名查询
  • 电影网站开发api网页设计一般用什么软件
  • wordpress附加字段太原seo推广
  • 网站建设课件腾讯广告推广平台入口
  • 怎么在日本做乐天网站供货商推广方案经典范文
  • 专业开发网站建设哪家好引擎搜索器
  • 山西公司怎么做网站怎么开通网站
  • seo 能提高网站速度吗百度保障客服电话
  • 网站怎么做盈利什么是百度快照
  • 南京平台网站建设企业关键词优化最新报价
  • 给企业做网站挣钱吗web网站设计
  • 软件b2c网站建设淘宝指数官网的网址
  • 潍坊建设网站公司电话企业如何开展网络营销