设计模式-10

举报
kwan的解忧杂货铺 发表于 2024/05/15 06:40:38 2024/05/15
【摘要】 十.树形结构删除与新增 1.组合模式Component 抽象构件角色 定义参加组合对象的共有方法和属性Leaf 叶子构件 叶子对象,其下再也没有其他的分支,也就是遍历的最小单位。Composite 树枝构件 树枝对象,它的作用是组合树枝节点和叶子节点形成一个树形结构。 2.访问者模式表示一个作用于某对象结构中的各个(层级啊)元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的...

十.树形结构删除与新增

1.组合模式

  • Component 抽象构件角色 定义参加组合对象的共有方法和属性
  • Leaf 叶子构件 叶子对象,其下再也没有其他的分支,也就是遍历的最小单位。
  • Composite 树枝构件 树枝对象,它的作用是组合树枝节点和叶子节点形成一个树形结构。

image-20230730195204206

2.访问者模式

表示一个作用于某对象结构中的各个(层级啊)元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。

  • Visitor——抽象访问者 (ItemVisitor) 抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是 visit 方法的参数定义哪些对象是可以被访问的。
  • ConcreteVisitor——具体访问者 它影响访问者访问到一个类后该怎么干,要做什么事情。
  • Element——抽象元素 (AbstractProductItem) 接口或者抽象类,声明接受哪一类访问者访问,程序上是通过 accept 方法中的参数来定义的。
  • ConcreteElement——具体元素 (ProductItem) 实现 accept 方法,通常是 visitor.visit(this),基本上都形成了一种模式了。
  • ObjectStruture——结构对象(ProductItem)

image-20230730195239033

3.层级结构的删除与增加

项目需求:目前商城中有很多商品目录,且层级很多。为了对层级目录进行管理,需要满足对层级目录的增加和删除。

要求:

  1. 层及目录是保存在 DB 中的,项目一旦初始化,需要将层及目录设置为超热点缓存。
  2. 支持在线对层级目录的增删。
  3. 前端获取一次层及目录后,每隔 24 小时对层级目录进行后台重新获取。
  4. 层及目录更新需要先更新 redis 缓存,再更新 DB。后台层及目录缓存应该为永不过期缓存。

image-20230730195037012

image-20230730195125957

5.使用总结

  1. 构建抽象节点,只包含新增和删除方法;
  2. 构建基础节点,添加属性,并复写抽象方法;
  3. 添加访问者接口;
  4. 添加新增访问者实现,添加新增的逻辑;
  5. 新增删除访问者实现,添加删除的逻辑;
  6. 组合模式主要是用于构建树形结构;
  7. 访问者模式主要是用于对组合模式的具体的行为操作,比如新增或者删除;
  8. 使用到了组合模式和访问者模式;
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。