实战设计模式——用组合模式实现JSON

conis 2009-01-10 12:25:24
前言
和所有程序员一样,我也一直在学习,学习更深层次的技术,学习软件开发的方法,学习软件项目管理。在学习设计模式的过程中,找了不少书,但我在学习这些书本的时候发现了一个很头疼的问题,这些书本都很生涩,非常之抽象,从模式的定义到模式的意图,再到模式的类图等等,非常多的笔墨来描述他们。可是,当讲到实际应用的时候,却是戛然而止,仿佛有若蜻蜓点水。
我想大师们和我不一样,他们站在一个抽象的高度,所以他们只讲抽象、理论、要领、原则。然而,软件界要培养大师级的人物毕竟是小数,大多数人和我一样,是一个实践者,况且,每一个大师都是菜鸟进化而来的。千里之行,始于足下,九层高台,起于垒土。
一直想把设计模式这个东西放在实际的案例中,然后写出来,这样我觉得更加平易近人,程序员都喜欢看代码。但实际上有很多制约未能成行,一方面是自身的水平问题,另一方面是一时间难以找到这么多合适的案例出来。
刚好凑巧,最近需要用到JSON,设计模式中的组合模式正好可以应用,完成代码之后就想把自己的想法写出来,也希望多多少少能帮到正在学习设计模式的人,也算是这个系列的一个起点吧,我希望以后还有更多的时间与机会来写其它的设计模式。
如果您正在看这篇文章,表示您正在学习,虽然本文附有代码,但我想您最好亲自去写一下这些代码。毕竟“纸上来得终觉浅,绝知此事要躬行”,多写多问多看总是有好处的。
坦白讲,我的技术非常有限,在这篇文章中一定会存在着许多谬误,欢迎大家拍砖。
我希望和更多的人一起交流,当然不仅仅是局限于技术,所以公开我的联系方式,但由于时间关系,我不一定能有问必答,希望能得到您的原谅。

技术要求
 设计模式的基本概念,对组合模式有一个基本的了解,如果不太明白,可以到网上去找相关的书籍,推荐一下《大话设计模式》这本书。
 JSON(Javascript Object Notation,JSON其实非常简单,实际上就是一个数据字典,有点像C#中的Hashtable,网上有一个《深入浅出JSON》的PDF版,或者访问网址http://www.json.org
 面向对象开发的基本思想,最好是有C#或者Java的开发经验。
案例背景
因项目需要,我们需要用C#生成JSON数据
案例分析
这里面有一个关键词——JSON,我们来看看JSON数据到底是怎么样的,典型的JSON数据如下:

Javascript代码
{
“ArticleID”:”10”,
”Title”:”实战设计模式——用组合模式实现JSON”
}

这是典型的数据字典格式,Name:Value,Name和Value都用引号括起来的,多个数据字典用逗号为分隔,我们再来看一个复杂点的:

Javascript代码
{
“ArticleID”:”10”,
“Category”:
{
“CategoryID”:”15”,
“Caption”,”实战设计模式系列”
//这里可能还会有子级
},
//这里可能还有更多与Category一样的节点
”Title”:”实战设计模式——用组合模式实现JSON”
}

你有没有发现,这里实际上是棵树,根节点是没有名称的,根节点下面有两个子节点,分别是ArticleID和Title,还有一个特别点的子节点Category,这个子节点又拥有两个子节点CategoryID及Caption。
在这棵树上,每一个子节点可能还会有无数个子孙节点,那么,JSON代码的节点就有三种类型:

节点类型 特点描述
根节点 节点没有名称,节点没有值,节点用一对花括号括起来
普通节点 节点有名称,节点没有值,节点用一对花括号括起来
叶子节点 节点有名称,有值

还有一个通用的特点就是节点与值是用分号隔开的,节点与节点之间用逗号分隔。


因为原文件较大,一共20页,CSDN不能发这么多,请下载PDF文件,如果这篇文章对您有用,请回复一下^_^

下载地址
http://www.conis.cn/UPLOAD/PDF/DesignPattern_Composite_JSON.pdf
...全文
177 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
devilli 2009-01-12
  • 打赏
  • 举报
回复
学习学习
大头_衍 2009-01-12
  • 打赏
  • 举报
回复
看看
内容概要:本文围绕异构系统集成中的核心挑战——数据模型差异,深入探讨了JSON数据解析与处理的实战解决方案,重点聚焦于多态反序列化、动态映射与容错机制。通过一个物联网设备管理系统的代码实例,详细展示了如何利用Jackson框架的@JsonTypeInfo和@JsonSubTypes注解实现基于类型标识的自动多态解析,完成不同设备数据(如温度传感器、开关设备)到Java对象的精准映射。文章还剖析了继承体系设计、未知字段容错、ObjectMapper性能优化及业务逻辑解耦等关键技术要点,强调声明式配置与关注点分离的设计思想。最后指出该技术在Webhook、支付网关等场景的广泛应用,并展望AI驱动的语义级智能映射与JSON Patch标准化的发展趋势。; 适合人群:具备Java开发基础,熟悉JSON处理,从事中间件、微服务或系统集成相关工作的1-5年经验研发人员;对架构设计与高性能数据处理感兴趣的技术人员。; 使用场景及目标:①解决跨系统数据模型不一致导致的集成难题;②实现灵活可扩展的多类型消息统一解析;③提升系统在接口演进中的兼容性与稳定性;④结合设计模式构建高内聚低耦合的数据处理架构。; 阅读建议:此资源兼具技术深度与工程实践价值,建议读者结合代码案例动手实践,重点关注注解配置原理与性能调优细节,同时思考如何将多态解析思想迁移至自身业务场景,并探索与策略模式、事件驱动架构的整合应用。
详细描述:内容简介本书采用循序渐进的方式介绍了用PHP 进行Web 开发的相关知识。书中首先从OOP 采用的机制—— 抽象类、接口、契约式编程开始讲起,然后介绍了静态方法、单例模式、工厂模式和PHP 6 的新特性等内容,接着介绍了测试和文档方面的内容,还介绍了标准PHP 库SPL 方面的知识以及PHP 开发人员最有可能用到的MVC 模式,最后介绍了Ajax 、JSON 、SOAP Web 服务以及SSL 客户端验证等Web 2.0 方面的内容。本书适合中、高级的PHP 程序员阅读。媒体评论 “很长时间没有看到这样有价值的PHP高级图书了,我从本书中获益匪浅。强烈推荐!”                   ——Quentin Zervaas,资深PHP程序员,《PHP Web 2.0开发实战》一书作者  “本书是我读过的最好的技术书,推荐阅读。”                   ——Amazon.com 目录第一部分 OOP和模式 第1章 抽象类、接口和契约式编程 第2章 静态变量、成员和方法 第3章 单例模式和工厂模式 第4章 异常 第5章 PHP 6中的新特性第二部分 测试和文档编写 第6章 文档编写和编码规范 第7章 反射API  第8章 测 试、部署和持续集成第三部分 SPL(标准PHP库) 第9章 SPL简介 第10章 SPL迭代器 第11章 SPL文件和目录处理 第12章 SPL数组重载 第13章 SPL异常第四部分 MVC模式 等 。。

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧