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

网站建设需要考什么证学生网页设计作品欣赏

网站建设需要考什么证,学生网页设计作品欣赏,陈木胜拍完怒火重案了吗,福建seo搜索引擎优化👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…

👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD
🔥 2025本人正在沉淀中… 博客更新速度++
👍 欢迎点赞、收藏、关注,跟上我的更新节奏
🎵 当你的天空突然下了大雨,那是我在为你炸乌云

文章目录

  • 一、入门
    • 什么是组合模式
    • 为什么有要组合模式?
    • 怎么样实现组合模式?
  • 二、总结
    • 组合模式的优点
    • 组合模式的缺点
    • 组合模式的适用场景

一、入门

什么是组合模式

组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次关系。组合模式使得客户端可以统一处理单个对象和组合对象,而无需关心它们的具体类型。

组合模式的核心思想是:将对象组织成树形结构,使得对单个对象和组合对象的操作具有一致性。

为什么有要组合模式?

假设我们正在开发一个电商平台,需要管理商品的分类和展示。商品分类是一个典型的树形结构,比如:

  • 电子产品
    • 手机
      • 苹果手机
      • 安卓手机
    • 电脑
      • 笔记本电脑
      • 台式机
  • 服装
    • 男装
    • 女装

在这个系统中,每个分类(如“电子产品”)可以包含子分类(如“手机”),也可以包含具体的商品(如“苹果手机”)
不使用组合模式的实现

// 分类类
public class Category {private String name;private List<Category> subCategories = new ArrayList<>();private List<Product> products = new ArrayList<>();public Category(String name) {this.name = name;}public void addSubCategory(Category category) {subCategories.add(category);}public void addProduct(Product product) {products.add(product);}public void display() {System.out.println("分类: " + name);for (Category category : subCategories) {category.display();}for (Product product : products) {product.display();}}
}// 商品类
public class Product {private String name;public Product(String name) {this.name = name;}public void display() {System.out.println("商品: " + name);}
}

客户端代码

public class Client {public static void main(String[] args) {// 创建商品Product iphone = new Product("iPhone 15");Product macbook = new Product("MacBook Pro");// 创建子分类Category phones = new Category("手机");phones.addProduct(iphone);Category computers = new Category("电脑");computers.addProduct(macbook);// 创建顶级分类Category electronics = new Category("电子产品");electronics.addSubCategory(phones);electronics.addSubCategory(computers);// 展示分类结构electronics.display();}
}

存在问题

  • 代码重复CategoryProduct需要分别定义display方法。
  • 类型判断:如果需要统一处理分类和商品,客户端需要频繁判断对象类型。
  • 扩展性差:新增节点类型(如“品牌”)时,需要修改大量代码。
  • 难以维护:嵌套层次较深时,代码会变得混乱。

怎么样实现组合模式?

组合模式的组成:
抽象组件(Component):

  • 作用:定义所有节点(叶子节点和复合节点)的通用接口或抽象类。
  • 职责
    • 声明所有节点共有的方法(如displayaddremove等)。
    • 提供默认实现(可选)。
  • 特点
    • 是叶子节点和复合节点的父类或接口。
    • 客户端通过抽象组件与具体节点交互。

叶子节点(Leaf)

  • 作用:表示树形结构中的叶子节点,没有子节点。
  • 职责
    • 实现抽象组件定义的方法。
    • 通常是树形结构中的最小单元。
  • 特点
    • 不能包含其他节点。
    • 是组合模式中的“部分”。

复合节点(Composite)

  • 作用:表示树形结构中的复合节点,可以包含子节点(叶子节点或其他复合节点)。
  • 职责
    • 实现抽象组件定义的方法。
    • 管理子节点(如添加、删除、遍历子节点)。
  • 特点
    • 可以包含其他节点。
    • 是组合模式中的“整体”。

【案例】电商分类 - 改
在这里插入图片描述
抽象组件(Component):定义所有节点(分类和商品)的通用行为。

public abstract class ProductCategory {protected String name;public ProductCategory(String name) {this.name = name;}public abstract void display();
}

叶子节点(Leaf):表示具体的商品,没有子节点。

public class Product extends ProductCategory {public Product(String name) {super(name);}@Overridepublic void display() {System.out.println("商品: " + name);}
}

复合节点(Composite):表示分类,可以包含子分类或商品。

import java.util.ArrayList;
import java.util.List;public class Category extends ProductCategory {private List<ProductCategory> children = new ArrayList<>();public Category(String name) {super(name);}public void add(ProductCategory category) {children.add(category);}@Overridepublic void display() {System.out.println("分类: " + name);for (ProductCategory child : children) {child.display();}}
}

客户端使用

public class Client {public static void main(String[] args) {// 创建商品ProductCategory iphone = new Product("iPhone 15");ProductCategory macbook = new Product("MacBook Pro");// 创建子分类Category phones = new Category("手机");phones.add(iphone);Category computers = new Category("电脑");computers.add(macbook);// 创建顶级分类Category electronics = new Category("电子产品");electronics.add(phones);electronics.add(computers);// 展示分类结构electronics.display();}
}// 结果
// 分类: 电子产品
// 分类: 手机
// 商品: iPhone 15
// 分类: 电脑
// 商品: MacBook Pro

二、总结

组合模式的优点

  1. 统一处理单个对象和组合对象
    • 核心优势:客户端无需区分处理的是叶子节点(单个对象)还是复合节点(组合对象)。
    • 案例:在文件系统中,无论是文件(叶子节点)还是文件夹(复合节点),都可以统一调用display()方法展示信息。
  2. 简化客户端代码
    • 核心优势:客户端不需要写复杂的条件判断(如if-else)来处理不同类型的节点。
    • 案例:在电商平台的商品分类系统中,客户端只需调用display()方法,无论是单品还是套餐都能自动递归处理。
  3. 扩展性强
    • 核心优势:新增节点类型时,只需继承抽象组件,符合开闭原则。
    • 案例:若要在组织架构中新增“项目组”类型,只需继承OrganizationUnit,不影响现有代码。
  4. 树形结构清晰
    • 核心优势:天然支持递归和嵌套,能直观表示“部分-整体”的层次关系。
    • 案例:UI框架(如Java Swing)通过组合模式构建组件树,方便渲染和事件传递。

组合模式的缺点

  1. 设计复杂性
    • 问题:需要抽象组件同时定义叶子节点和复合节点的行为,可能导致接口臃肿。
    • 案例:如果叶子节点(如File)需要实现复合节点的add()方法,只能抛出异常(UnsupportedOperationException),不够优雅。
  2. 类型系统的限制
    • 问题:客户端可能仍需通过instanceof检查类型,破坏透明性。
    • 案例:在文件系统中,若需要对目录(复合节点)执行特殊操作(如计算总大小),客户端可能被迫检查类型。
  3. 过度泛化
    • 问题:如果业务场景没有明确的层次结构,强行使用组合模式会导致设计过度复杂。
    • 案例:简单的商品列表不需要组合模式,直接使用集合即可。

组合模式的适用场景

  1. 树形结构的数据
    • 场景:需要表示对象的“部分-整体”层次关系。
    • 典型案例:
      • 文件系统(文件 + 文件夹)
      • UI组件树(按钮 + 面板)
      • 组织架构(员工 + 部门)
  2. 需要统一操作所有节点
    • 场景:希望对所有节点执行相同操作(如渲染、计算总价、权限校验)。
    • 典型案例:
      • 电商平台计算单品和套餐的总价格。
      • 游戏场景中渲染所有游戏对象(角色、道具、地图)。
  3. 动态组合嵌套结构
    • 场景:需要动态地添加、删除或嵌套节点。
    • 典型案例:
      • 菜单系统(支持菜单项和子菜单)。
      • 权限管理系统(角色可以包含多个权限,权限可以嵌套)。

文章转载自:

http://eWaNbwLB.gcrLb.cn
http://N69LumRW.gcrLb.cn
http://bVtxtMZc.gcrLb.cn
http://B66sbAi1.gcrLb.cn
http://2UpOxUwA.gcrLb.cn
http://hDpuyqDb.gcrLb.cn
http://GfpUlEtq.gcrLb.cn
http://XqEIykrL.gcrLb.cn
http://QRNFDVgc.gcrLb.cn
http://lXRstI3g.gcrLb.cn
http://TdntBLSC.gcrLb.cn
http://y3UOz39I.gcrLb.cn
http://4hjBgqhZ.gcrLb.cn
http://x7htd0Na.gcrLb.cn
http://vR5cOojI.gcrLb.cn
http://JQvUlGDD.gcrLb.cn
http://fjWCIEvI.gcrLb.cn
http://pDKo7ZYo.gcrLb.cn
http://axFufvKF.gcrLb.cn
http://B5XQC0ZF.gcrLb.cn
http://kOH3iVG4.gcrLb.cn
http://edELKiGj.gcrLb.cn
http://kHmeXdGq.gcrLb.cn
http://wFwcl1pC.gcrLb.cn
http://5UuUjaVB.gcrLb.cn
http://WkB1HrOt.gcrLb.cn
http://fZBWUSaV.gcrLb.cn
http://pLMLRG1N.gcrLb.cn
http://e0LuIg9D.gcrLb.cn
http://sZJwUsOZ.gcrLb.cn
http://www.dtcms.com/wzjs/627219.html

相关文章:

  • 找设计公司上哪个网站企业建站系统免费
  • 网站建设愿景网页设计教程读后感
  • 怎么查网站备案域名备案信息公司合法网站域名怎么注册
  • 佛山seo网站推广结婚证制作生成器app
  • 网站建设技术服务的方式是什么广东住房和城乡建设厅官方网站
  • logosc网站怎么做的宿州建设企业网站公司
  • 做公司网站 需要注意什么网站维护有哪些企业
  • 平阳网站建设网站建设维护方案ppt
  • 网站备案号查询网址新媒体营销案例分析
  • 上海网站制作公司怎么找网站内容管理系统(cms)
  • 省交通建设质安监督局网站班级网站建设论文
  • php做购物网站详情页的代码做ppt的网站叫什么
  • 网站怎么设计wordpress数据库在哪
  • 关键词网站怎样制作小视频
  • 织梦dede做网站的优点装饰设计院
  • cc域名做网站好吗最近一周的时政热点新闻
  • 有没有哪个网站免费做简历的南京模板做网站
  • 丰台网站建设联系方式网站建设使用多语言
  • 图列说明网站开发的流程wordpress取消邮件
  • 运行一个网站的成本定制系统软件开发
  • 做我的世界的mod的网站山东恒正建设有限公司 网站
  • 建设电子商务网站的好处外贸网站有必要吗
  • 永久免费网站虚拟主机it培训机构哪个好
  • 常州网站建设方案优化html静态网页源代码
  • 天猫网站做链接怎么做wordpress性能优化
  • 南昌智能建站模板新闻发布的网站
  • 做网站一般怎么收费的合肥网站开发网络公司
  • 现在主流的网站开发平台有哪些网站建站wordpress
  • 自己的电脑如何做网站网页设计培训机构哪个好
  • 做域名代理网站上海专业网站建设 公司