一、应用情景:
多人团队开发教务系统,张三复杂网页端、后台、数据库,李四负责安卓端,王五用java制作PC客户端。
每个人根据自身技术能力,在各自的终端上,逐渐增加功能模块。
张三的单节课课程数据JavaBean设计为:public class LessonDBBean(用于网页和后台数据库)。
李四设计为 public class LessonAppBean.
王五设计为 public class LessonPCBean.
随着三种终端上功能的扩展,成员变量的个数、命名不尽相同。
使用工厂方法模式,当后台收到三种终端的课程数据,生成实体类LessonDBBean的对象;终端收到课程数据,生成LessonAppBean、LessonPCBean。
二、数据样例:
所有终端和后台,用一个字符串,封装一节课的信息。
比如:第6周第1大节,实验课,课程名是体系结构,...
PC客户端的数据:“zhou=6&time_id=1&lessonType=2&lessonName=体系结构...”
网页、后台的数据:“week=6&timeid=1&lesson_type=2&lesson_name=体系结构...”
移动端的数据:“week_id=6&time_num=1&lessonType=2&course_Name=体系结构...”
用工厂方法模式完成编程。
三、其他方案:
用适配器模式。
不用设计模式,用四个函数完成转换:
LessonDBBean getBean_AppToDB(String app_msg);
LessonDBBean getBean_PcToDB(String pc_msg);
LessonAppBean getBean_DBToApp(String db_msg);
LessonPCBean getBean_DBToPc(String db_msg);
用工厂方法、抽象工厂完成转换。
如果理论课和实验课分成两个不同的类,程序繁琐,不如用一个int lessonType区分课程类型。
UML协作图:
UML类图:
体系结构实验4 代码 类图:
拓展:
了解现有的“课程表APP”,设计在每节课的上课前10分钟启动手机闹钟。
了解JSON格式的数据收发,JSON和JavaBean、Map<String,Object>格式之间的转换。
参考资料:
钉钉群加群网络请求(数据已修改):
https://h5.dingtalk.com/circle/healthCheckin.html?corpId=ding9f3ac5cd853&f0b5=d925cdb8&from=singlemessage