精华内容
下载资源
问答
  • 幼儿园一日观察报告
    千次阅读
    2021-01-17 18:59:13

    【www.520z-2.com - 观后感作文】

    篇一:《关于幼儿园一日常规活动管理的调研报告》

    关于幼儿园一日常规活动管理的调研报告

    东辽县第一幼儿园 周海波

    一、 调研的目的:

    幼儿在园一日生活看似平淡、繁琐,却随处蕴藏着深刻的教育价值。良好的一日常规活动不但能保障幼儿的安全、创设积极的活动氛围,更有利于培养幼儿的行为习惯、发展生活自理能力。同时也便于教师科学合理地安排、组织幼儿一日活动,提高保教质量。现在我园教师们正处于小幼转型的中级阶段,对幼儿一日常规活动的实施有待于逐步完善和提高,因此我在全园展开了一日常规活动管理的调查研究,希望通过调研能准确地掌握教师们对一日常规活动的组织、管理情况,找出不足,提出有效的解决策略,提高管理质量,促进师幼共同成长。

    二、 调研时间、对象及方法:

    今年8月至9月份,历时一个多月时间,我对东辽一幼全园9个班级进行了调研,共发家长问卷100份、有效问卷96份、访问了30名家长、18位教师,整个调研以《幼儿园一日常规活动细则要求》为标准,通过查看、听课、问卷、幼儿能力测评等方法展开,并且选择中班为对象进行半日活动跟踪观察,全面了解、分析全园一日常规活动管理的现状。

    三、 调研结果与分析:

    根据调研结果,我进行了分析,发现以下几个问题:

    第一、一日生活常态管理随意性强、目标意识薄弱

    我以《幼儿园一日常规活动细则要求》(文本)为依据制作调查问卷,测教师和保育员,统计结果显示:在一日活动中明确知道每个时间段自己应做什么、该怎么做的占68%,印象模糊、笼统,带有随意性的占32%,由此可见,对于每天都在做着的日常生活管理工作,教师因熟悉而忽视,对一日常规管理工作细节了解不透彻,带有很大的随意性。

    由访问18位教师对每个环节的计划性及近期、远期目标的明确性和具体化的结果来看,活动目标明确的占70%,目标模糊的占30%。可见仍有部分教师未能科学构建幼儿生活常规培养的系列内容,把一日生活常规的重点内容与其它内容等同,眉毛胡子一把抓,长期和近期的目标不清晰,工作缺少计划性、目的性。

    第二、正规活动内容设计缺乏科学性、有悖幼儿认知规律

    在听课过程中我发现38%的老师组织教育活动时,讲授的时间过长,孩子们在被动地听,教育过程没有体现让孩子参与活动。孩子显得无精打采,学习效果不好。幼儿的年龄小,注意力时间短,应抓住有意注意时间科学合理安排组织教学。教育活动内容和设计应体现动静交替、运用故事、儿歌、游戏等多样化的策略,科学安排教育活动。 第三、非正规活动的随机性被忽视,错失偶然的教育契机

    一日常规活动由正规教育活动和非正规教育活动两部分组成,幼儿园80%以上的时间都被非正规的时间占用,这是幼儿园区别于学校的最大特点。幼儿园非正规活动大部分由生活环节构成,诸如吃饭、喝水、入厕、盥洗、自由游戏以及这些环节的转换时间。从抽取的中

    班年龄段样板班级进行半日活动跟踪调研,主要看孩子们在半日活动中的具体表现,尤其关注幼儿在非正规活动下的常态表现。(因为大班即将离园,小班年龄小不足以彰显幼儿园常规特点,中班有了近两学年的幼儿园生活,已经初见成效,所以选择中班为样板班级)从观察结果来看上课等有组织的教育活动良好的占85%,吃饭、喝水、入厕、盥洗、自由游戏等环节管理良好的占60%。由此可见,存在重视正规教育活动的质量,忽视非正规活动所蕴涵的教育价值的问题,有的老师可能错失了一些本来很好的提高生活和自理能力的教育契机。 第四、家庭教育观念滞后教育链受阻,防碍良好习惯养成

    从家长调查问卷中看85%家长重视幼儿读书习惯、艺术活动的培养,忽略养成教育。其教育思想和观念还停留在传统认识上,尤其是现在的独生子女家庭对孩子娇惯、溺爱,不是过度保护就是过分纵容,使得幼儿的常规培养不受重视。在幼儿园注重培养生活习惯、自理能力,而在家中往往被家长取而代之,使幼儿的教育链严重断条,不能够形成统一、连续的教育氛围,严重影响甚至阻碍幼儿养成教育的培养。

    当然调研中也有令人可喜的方面:

    一、爱心育人,一日常规管理工作初见成效。

    教师们工作认真、踏实,细心到位,对孩子有爱心。能对照教育教学常规尽量做好各项工作。幼儿的生活习惯、言行举止、文明礼貌都有了长足的进步,幼儿的语言表达、动手能力得到了很好的发展,

    如:大班幼儿学习的坐姿、执笔姿势、书写姿势、倾听习惯等已养成,这些良好的习惯孩子将受用一生。

    二、区域延伸,游戏陪伴幼儿快乐成长

    一日活动中,区域活动开展特色鲜明。区域活动是集体活动的延伸和有效补充,是关注个体差异的有限途径。幼儿园每个班都设置了相应的活动区域,如建构区、玩具区、美工区、益智区等,教师们能精心设置,活动区材料的投放符合幼儿年龄特点,并都有一定数量的自制玩具,除在时间上的明确保障外,看到的是一种有序进入和离开的常态,区域活动满足了孩子们“玩”的兴趣。可见各班区域活动的开展并非一日之功。也真正体现了幼儿园以游戏为基本活动,寓教育于各项活动之中的特色和特点。

    三、特色发展,蒙特梭利本土化实施

    蒙特梭利教育是东辽一幼引进的先进教育理念,带动了全园的特色发展。蒙班的小朋友经过一年的常规管理,现在不但能够自觉遵守各种规则,(比如:谁先拿到的谁先玩、学会了等待;别人的东西不可以拿、不打扰别人,学会了尊重; 做错事情会主动道歉,学会了沟通。)而且已经逐渐将其默化为一种良好的学习和生活习惯,不需要教师一再地重复管理,孩子们就能够自觉地完善个性发展。本学期,应家长的强烈要求,幼儿园又开设了一个蒙班。

    四、对策建议

    针对分析出的上述限制幼儿一日常规管理工作优化的主要原

    因,我认为可以采取以下对策建议予以扭转。

    第一、 加强培训、严格考核,增强常规活动目标意识

    为了提高教师们对幼儿一日常规活动要求的认识,充分了解各年龄段在一日活动中各时间段应安排的活动内容和细节,幼儿园要加强对老师、保育员的培训工作。带领教师、保育员仔细研读、抓住关键的环节解析《幼儿园一日常规活动细则要求》,如在午睡环节,对各个年龄段要提出不同的要求:小班:安静就寝,睡姿正确。中班:不蒙头睡、能将脱下的衣裤、鞋袜放在固定的地方。能区分左右脚,并穿好鞋。大班:不带小玩物上床,不东张西望;闭上眼睛,安静入睡;按时起床,按顺序穿衣服;自己整理床铺。通过培训使教师和保育员准确把握一日活动中每个时间段应做什么,怎样去做,从而明确工作思路和方向。引导教师制定科学合理的每日和阶段性工作目标。同时加强考核检查工作。细化考核目标,量化管理,将一日生活管理质量与考评、奖励直接挂钩,提高教师、保育员对工作的重视程度。 第二、完善制度 、加强教研,提升正规教育活动质量

    完善备课制度、严格备课要求、加强听课指导。在集中教育活动前严格检查,教师是否将教具、学具准备充分,教学环节设计是否做到无缝衔接、注重幼儿专注力的培养,能否激发幼儿学习的积极性。同时加强教研活动,以研讨课开路、示范课指导、汇报课交流,采用“一课多上”、“同课异构”等主题研讨开展教研活动,运用说课、讲课、评课等多种方法,指引教师在教学内容的设计中注意综合性,根据幼儿年龄特点,考虑到不同年龄幼儿的有意注意时间差别安排内

    篇二:《幼儿一日活动观察与评价》

    一、问题的提出

    随着素质教育的进一步深入,原有的课程模式和教育评价的价值取向、评价内容、评价方法受到了极大的挑战,新一轮课程改革已迫在眉睫。为了顺应新课改的需要,2001年9月新的《幼儿教育纲要》颁布了,新《纲要》第一次把教育评价与教育内容和要求、组织与实施放在同等重要的位置。其中明确指出:“教育评价是幼儿园教育工作的重要组成部分,是了解教育的适宜性、有效性,调整和改进每一个幼儿的发展,提高保教质量的必要手段。”可见:评价在教育实践中起着有利的杠杆作用。

    通过观察与评价,让教育去适应每一个孩子,使他们得到最大限度的发展,是我们进行观察与评价的主要目的。关键是观察与评价要以自然的方式融入到幼儿一日活动的每一个环节中。通过对所获得的观察信息进行分析,了解幼儿情绪、情感、交往能力、兴趣爱好、意志品质、交往能力等各方面的发展水平,以此来制定和调整相应的教育教学计划和策略,更有利于促进每一个孩子的发展。在这个观察、分析、评价、反馈、调整的过程中,教师的业务能力提高了,她们与幼儿一起成为教育成长的共同体。

    观察、评价在幼儿教育过程中的重要地位可见一斑,关键是如何进行观察、观察什么?怎样利用观察到的信息进行评价?评价的价值取向、评价的目的、评价的标准、评价的抓手是什么?以及如何通过评价来调整教育教学的内容和策略等等,就成为我们要研究的重要问题。

    (一)、研究的现状:

    教育评价是幼儿园教育活动的基本反馈机制,是提高保教质量的有效手段,这一点已被国内外专家和幼儿界的同行们普遍认可。综观国内外研究的现状,迄今为止,关于教育评价方面的研究也有许多。诸如:教育评价体系的建构;评价策略、评价方法和原则的研究;幼儿教育评价的发展方向;对孩子进行多角度、多层次立体评价;成人评价和儿童自我评价等等。归纳起来主要是对评价体系、评价原则和方法、评价主体等方面的研究,对教育评价的理论研究较多,而真正

    便于教师们进行操作的研究较少。教师在日常活动中进行评价仍然感到非常棘手,无论是在时间和精力上都力不从心,迫切地需要有一套在平时的活动中,便于操作、有利于观察记录、进行有效评价的操作方法。

    (二)、现实生活中存在着评价的误区:

    在平时的活动中,比较重视幼儿的知识技能。比如:绘画时,经常用像与不像来评价幼儿的作品,而忽视幼儿的情感、态度、兴趣、想象力、创造力等。教师们虽然知道不能用划一的标准来评价不同的幼儿,但在平时的教学活动中不经意地进行横向的比较,伤害了孩子的自尊心。

    片段一:

    幼儿园半日活动开放,老师先讲了《可可豆历险记》的故事,当讲到可可豆在森林里碰到凶猛的狮子时,故事嘎然而断,请小朋友想象将会发生什么事情。孩子们争先恐后地议论开了,接着老师请小朋友把将要发生的故事画下来。教师给孩子的空间比较大,没有要求孩子该画什么,不该画什么,为了发挥隐性的教育功能,教师在活动室里贴了几张自编的故事画。孩子们画完后,对着自己的作品非常的满足,喜滋滋地陶醉着。只听见沈鹏妈妈指着儿子的画说:‚你怎么画得跟老师一点也不象,狮子像一只猫……‛,刚才还在陶醉的沈鹏,被泼了一盆冷水,哇地哭开了。

    片段二:

    大班科学活动‚液体守恒‛,教师准备了几只不同形状的玻璃杯,在每只玻璃杯中倒入同样多的一碗水,然后提问:‚你觉得这几只杯子有什么不同和相同的地方?请你们自己去操作一下。‛孩子们开始工作了,大家玩得非常开心。通过自己操作后,全班大部分幼儿搞清楚了液体守恒的原理。只有徐卓然、董福宇等几名幼儿还不明白,老师有些生气,就说:‚你们怎么回事,人家都弄明白了,就你们几个还搞不清楚。‛

    (三)、研究的现实意义

    1、对幼儿发展的现实意义

    我们发现过去的教育评价重视的往往是区分、甄别、选拔性功能,注重教育的结果而忽视教育的过程,是单纯的结果性评价和终结性评价。把教师预设的知识性目标达成度高的,认为是一节成功的课,而对幼儿在活动中的积极性和情绪

    的愉悦性关注的较少,对是否能促进幼儿自主发展和可持续发展考虑得不多。

    在本研究中,为了让教育去适应每一个孩子的发展,我们采用案例研究的方法,还根据各年龄段幼儿的特点,制定一些评价量表,对幼儿的一日活动进行观察、评价;充分调动家长这一评价的主体;在获得了评价信息后,及时调整教育教学的策略,以便更好地促进孩子的健康发展。采用发展性评价,注重活动的过程和幼儿在活动中的情感体验,使幼儿保持愉悦的情绪,处于积极主动的状态。

    2、对教师专业成长的现实意义

    在课题研究的过程中,我们发现:尽管教师会背《纲要》中一些理念,但在实际工作中,对幼儿的评价也有一些偏差,-些教育行为或多或少地存在着不利于幼儿自主性发展的痕迹。理论与实际脱节的现象时有发生,这就需要我们的教师不断地学习,不断地反思,及时地调整自己的教育教学行为,提高自己的专业素养,以此达到教师和幼儿共同成长的双赢效果。

    因此,我们就萌发了对幼儿一日活动进行观察评价研究的想法。

    二、研究的设计

    (一)、概念的界定

    幼儿一日活动:是从家长把孩子送进幼儿园的那一刻起,我们把一日活动分为晨间活动、游戏活动、自主活动(区角活动、角色游戏、自由活动)、生活活动、集体和小组活动等。

    观察:我们在进行课题研究时,要求教师在自然的状态下观察幼儿一日活动中的行为表现,以表格、轶事、案例的方式进行记录,为合理评价幼儿的发展,提供第一手材料。

    评价:主要是对观察到的各方面信息加以分析,读懂幼儿的行为表现,对幼儿的发展状况做出合理的评价。重点是评价幼儿在一日活动活动中的情绪与情感体验、兴趣爱好、交往能力、态度倾向、意志品质等,不注重对幼儿知识技能的评价。

    (二)、研究的目标

    1、通过案例、轶事、表格的方式,观察记录幼儿一日活动的行为表现,了解他们现有的水平和发展状况,制订幼儿发展的措施与对策,充分挖掘幼儿的潜能,促进幼儿的发展。

    2、通过案例研究,促使教师进行反思,促进教师的专业成长。

    3、探索幼儿观察与评价的方法和策略。

    (三)、研究的内容:

    研究内容的调整:

    由于个别教师工作的调整和研究人员精力的问题,为了确保区级立项课题保质保量地完成,我们以案例研究为抓手,采用点面结合的方法,在观察幼儿一日活动的同时,选择几个具有代表性的环节:区域活动、美术活动、生活自理能力进行重点的研究。对区级课题作了一些调整,把原来的四个子课题调整为三个,具体内容如下:

    1、幼儿生活自理能力观察与评价的案例研究。

    2、区角活动观察与评价的研究。

    3、运用教育评价提高幼儿美术活动的兴趣。{幼儿园一日观察报告}.

    (四)、研究的方法:

    1、观察记录法:

    教师有计划地观察幼儿的一日活动的行为表现,对每个孩子的观察每周不少于两小时,通过观察,了解幼儿的发展状况和需要,并请家长参与观察与评价。

    2、分析比较法:

    将观察记录的材料进行分析与研究,用纵向比较的方法,用发展的眼光评价幼儿,找到幼儿的智力强项,以强项带动弱项的发展。

    3、案例研究法:

    通过活动实录,案例和轶事记录,进行评价和反思,制定下一阶段发展和培养的计划,调整教育教学内容和策略。

    4、行动研究法:

    在教育教学的实践工作中探索和积累观察的方法和技巧、评价内容和手段等经验,促进教师专业成长。

    (五)、研究的时间与步骤:

    第一阶段:2003年9月--12月

    1、成立课题研究小组,查找资料,制定课题研究方案。

    2、落实子课题研究内容和人员。

    第二阶段:2003年12月—2005年2月

    1、制定一日活动观察记录表,进行观察与评价,适时调整幼儿发展培养的计划。

    2、设计家长观察评价的表,充分发挥家长作为评价主体的作用。

    3、开展案例研究,进行反思。

    4、检查课题研究的进展,2004.5撰写阶段性报告。

    第三阶段:2005年2月—2005年5月

    1、2005年3月子课题结题。

    1、2005年5月结题,收集课题资料,撰写课题报告。

    三、研究的理论依据

    1、新《纲要》的理论支撑——评价是为了幼儿发展的需要。

    新《纲要》对教育评价的价值取向进行新的阐述,注重评价过程由静态评价变为动态评价,关注幼儿的学习变化和成长过程。认为评价是一个持续的过程、应关注已有的发展和潜在的发展、应该在真实情景的活动中进行、应反映不同的变化和成长过程等。评价的目的是为了了解幼儿的现有水平和发展需要。

    2、多元智能理论——用幼儿的智力强项带动弱项。

    《多元智能理论》中提出要充分发掘每个幼儿身上隐藏着巨大的潜力,尊重幼儿个体差异。每一个人都具有不同的智力发展潜能, 八种智能表现在同一个人身上时,有它的强项和弱项,我们的教育和评价要善于发现孩子的强项,以强项带动弱项的发展。通过观察和评价,并不是为了方便教师对孩子们进行分类,而是为了了解孩子、分析他们的认知特点与需要,并从中找到教育他们的最佳切入点。

    3、赏识教育法——少用食指 多用拇指。

    多发现孩子身上的闪光点,多赏识孩子的进步,有利于矫正孩子的不良习惯,激发孩子的自信心,从而引导孩子走向成功。赏识是一种理解,更是一种激励。老师一个充满期待的眼神,一句满怀喜爱的话语,都能给孩子以“我能行”的暗示,唤起孩子追求进步、达到成功的自信心。将“竖起大拇指”这一动作真正运用到评价孩子的进步当中去。

    四、研究的结果与分析

    篇三:《幼儿个案跟踪观察记录》

    幼儿个案跟踪观察记录一

    观察教师:

    幼儿姓名:彤彤

    幼儿情况:

    彤彤小朋友极其好动,上课两三分钟注意力就会转移,容易受身边的事物所影响,窗外的脚步声就能转移他的注意力。好奇心强,自控能力差,并常伴有某种习惯性小动作,如咬指甲、吸手指、抠鼻子等,做什么事大都半途而废,有头无尾。有点口吃,与老师小朋友语言交流有障碍。

    个案观察记录:

    2013年5月10日 上课

    在上分享阅读课时,小朋友都积极举手回答问题。彤彤老是站起来,咬着手指头,一下又望望黑板,一下又望望其他小朋友,或是望着地板,神情游离不定,又像关注某个东西,又似在沉思,但他什么也没做,也不说一句话。其他小朋友在朗读时他并没有读,而且常常被外面其他事物所吸引,总把一只腿搭在旁边小朋友的椅子上,一下又去与旁边的小朋友嬉戏,或是打扰其他小朋友,当我提醒以后他才停止嬉戏,但眼神还是没有关注老师和黑板。

    2013年5月15日---- 2013年5月18日 就餐

    彤彤吃饭比较快,但是喜欢做些小动作,例如用勺子靠近旁边陈卓立的头发,有时把不爱吃的东西放在别人的碗里,他还是习惯性地到处望来望去,饭粒经常掉到桌子上、衣服上、地上。

    2013年6月9日----2013年6月12日 游戏

    彤彤喜欢和其他小朋友一样做游戏,但是常常注意力不集中,一下就到处望望,打扰其他的小朋友。在玩玩具时,其他小朋友都是安静的靠墙坐着玩,他总是喜欢一个人站着在窗前把玩具摆上去。每次收玩具时他从不会主动交过来

    更多相关内容
  • 【三等奖观察记录】大班 《不随便拿别人的东西》.docx
  • 比如李会军大哥设计模式篇中观察者的那一节 http://www.cnblogs.com/Terrylee/archive/2006/10/23/Observer_Pattern.html说说我自己这模式的理解,其思想核心是:每个被观察对象都依据对象数据的改变而改变,被...
  • 【一等奖观察记录】东西不见了.docx
  • 【二等奖观察记录】大班 《游戏中不争抢东西》.docx
  • CAD_CAM个性化基台改善后牙区种植修复食物嵌塞的效果观察.pdf
  • 设计模式(二)————观察者模式

    千次阅读 多人点赞 2021-10-15 16:20:31
    定义对象间一种一多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新 从定义就可以看出,观察者模式主要就是两部分:主题(Subject)和观察者(Observer) 为了更清楚的了解...

    引言

    观察者模式可以说是JDK中使用最多的模式之一,这个模式可以让你的对象随时随地的了解想要知道的情况,你还可以让某个对象在运行时决定是否要继续通知;观察者模式的定义为:

    定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新

    从定义就可以看出,观察者模式主要就是两部分:主题(Subject)和观察者(Observer)

    为了更清楚的了解观察者模式,下面将会用案例说明观察者模式;

    天气预报项目

    今天一个新的项目交到了你的手上,这个项目是一个天气预报公司的,他们想要

    • 将每天测量到的温度,湿度,气压等等以公告的形式发布出去
    • 设计开放型 API,便于其他第三方也能接入气象站获取数据
    • 而且天气预报最基本的要求是准时,不能开始下雨了才把下雨的预报发出来,所以很重要的一点是:每当天气预报更新的时候,要实时通知给第三方;

    通过需求分析可以提炼出关键一点:公布天气信息的“布告板”可以有多个,这些布告板全部从天气预报公司获取天气信息;
    大致是下图的意思:
    在这里插入图片描述
    再加上实时更新的需求,就是对标观察者模式;
    上面图可以等同于下面这个:
    在这里插入图片描述
    所以只需要确定好观察者模式的两个主要组成:主题(Subject)观察者(Observer)就好了;

    很明显,主题对象就是天气预报公司,观察者就是一系列第三方网站(的布告板)

    接下来就是如何用方法将观察者和主题联系起来呢?
    对于观察者来说,需要的方法就是一个:

    • 接受主题的输入(update)

    对于主题来说,需要以下功能:

    • registerObserver() 注册
    • removeObserver() 移除
    • notifyObservers() 通知注册的用户

    那么就可以简单尝试画出UML类图了:
    在这里插入图片描述
    大致就是这样,Subject是主题的接口,Observer是观察者的接口,
    可能你会觉得上面明明就说的那么简单,怎么这一下子多了好几个东西
    其实这样子的代码耦合度更低,而且思路非常简单,下面就来通过代码实现一下就明白了;


    主题:

    // 主题接口
    public interface Subject {
        public void registerObserver(Observer o); // 注册观察者
        public void removeObserver(Observer o); // 移除观察者
        public void notifyObserver(); // 通知观察者
    }
    
    // 实现主题接口,该类为天气预报公司
    import java.util.ArrayList;
    
    public class WeatherData implements Subject {
        private ArrayList<Observer> observers; // 观察者数组,存放所有观察者
        private float temperature; // 温度
        private float humidity; // 湿度
        private float pressure; // 压力
        public WeatherData() {
            observers = new ArrayList<>();
        }
        // 注册观察者
        @Override
        public void registerObserver(Observer o) {
            observers.add(o);
        }
        // 移除观察者
        @Override
        public void removeObserver(Observer o) {
            int i = observers.indexOf(o);
            if (i >= 0) {
                observers.remove(o);
            }
        }
        // 通知观察者
        @Override
        public void notifyObserver() {
            for (var i : observers) {
                i.update(this.temperature, this.humidity, this.pressure);
            }
        }
        // 信息更新
        public void measurementsChanged() {
            notifyObserver();
        }
        // 设置天气
        public void setMeasurements(float temperature, float humidity, float pressure) {
            this.temperature = temperature;
            this.humidity = humidity;
            this.pressure = pressure;
            measurementsChanged(); // 设置完成天气就已经改变了
        }
    }
    


    观察者:

    // 观察者
    public interface Observer {
        public void update(float temp, float humidity, float pressure); // 更新布告板
        public void display(); // 展示布告板
    }
    
    // 天气预报公司自己的布告板
    public class CurrentConditionsDisplay implements Observer{
        private float temperature; // 温度
        private float humidity; // 湿度
        private float pressure; // 压力
        @Override
        public void update(float temp, float humidity, float pressure) {
            this.temperature = temp;
            this.humidity = humidity;
            this.pressure = pressure;
            display();
        }
    
        @Override
        public void display() {
            System.out.println("当前温度:" + this.temperature +
                    "当前湿度:" + this.humidity + "当前压力:" + this.pressure);
        }
    }
    
    // 百度网站的温度布告板
    public class BaiDuDisplay implements Observer{
        private float temperature; // 温度
        private float humidity; // 湿度
        private float pressure; // 压力
        @Override
        public void update(float temp, float humidity, float pressure) {
            this.temperature = temp;
            this.humidity = humidity;
            this.pressure = pressure;
            display();
        }
        @Override
        public void display() {
            System.out.println("百度温度:" + this.temperature +
                    "百度湿度:" + this.humidity + "百度压力:" + this.pressure);
        }
    }
    

    还可以继续增加布告板,这里就列举这两个了;

    测试执行代码:

    public class WeatherStation {
        public static void main(String[] args) {
            WeatherData weatherData = new WeatherData();
            Observer current = new CurrentConditionsDisplay(); // 自己网站的观察者
            Observer baidu = new BaiDuDisplay(); // 百度观察者
            weatherData.registerObserver(current); // 注册观察者
            weatherData.registerObserver(baidu); // 注册观察者
            weatherData.setMeasurements(11, 22, 33);
        }
    }
    

    运行结果:

    当前温度:11.0当前湿度:22.0当前压力:33.0
    百度温度:11.0百度湿度:22.0百度压力:33.0
    

    其实一看代码,还是两大部分,所以对于观察者模式,主要思考的是主题和观察者的关系就可以了;

    使用了观察者模式后,代码有以下好处:

    • 观察者模式设计后,会以集合的方式来管理用户(Observer),包括注册,移除和通知
    • 增加观察者(即成一个新的公告板),就不需要去修改核心类 WeatherData 的代码,遵守 ocp (开闭)原则

    Java内置观察者模式

    JDK中提供了 java.util.Observable 实现类和 java.util.Observer 接口,这是Java内置的观察者模式,可以直接来用,先简单对比介绍一下:

    • Observable 的作用和地位等价于前面的Subject
    • Observable 是类,不是接口,类中已经实现了核心的方法 ,即管理 Observer 的方法 add… delete … notify…
    • Observer 接口的作用等价于前面的 Observer接口, 都有update
    • Observable类 和 Observer接口 的使用方法和前面讲过的一样,只是 Observable 是类,通过继承来实现观察者模式

    下面我将用内置观察者模式支持来重写一下上面的代码实现相同的功能;

    主题:

    import java.util.Observable;
    
    // 直接继承Observable类
    public class WeatherData extends Observable {
        private float temperature; // 温度
        private float humidity; // 湿度
        private float pressure; // 压力
        // 温度改变通知观察者
        public void measurementsChanged() {
            setChanged(); // 确定已经改变
            notifyObservers();
        }
        // 设置温度
        public void setMeasurements(float temperature, float humidity, float pressure) {
            this.temperature = temperature;
            this.humidity = humidity;
            this.pressure = pressure;
            measurementsChanged();
        }
        public float getTemperature() {
            return temperature;
        }
        public float getHumidity() {
            return humidity;
        }
        public float getPressure() {
            return pressure;
        }
    }
    


    观察者:

    // 天气预报公司自己的布告板
    import java.util.Observable;
    import java.util.Observer;
    
    // 实现了Observer接口
    public class CurrentConditionsDisplay implements Observer{
        private float temperature; // 温度
        private float humidity; // 湿度
        private float pressure; // 压力
        public void display() {
            System.out.println("当前温度为:" + this.temperature + " 当前湿度为:"
                    + this.humidity + " 当前压力为:" + this.pressure);
        }
        @Override
        public void update(Observable o, Object arg) {
            if (o instanceof WeatherData) {
                WeatherData weatherData = (WeatherData) o;
                this.temperature = weatherData.getTemperature();
                this.humidity = weatherData.getHumidity();
                this.pressure = weatherData.getPressure();
                display();
            }
        }
    }
    
    // 百度网站的温度布告板
    import java.util.Observable;
    import java.util.Observer;
    
    // 实现了Observer接口
    public class BaiDuDisplay implements Observer {
        private float temperature; // 温度
        private float humidity; // 湿度
        private float pressure; // 压力
        public void display() {
            System.out.println("百度温度为:" + this.temperature + " 百度湿度为:"
                    + this.humidity + " 百度压力为:" + this.pressure);
        }
        @Override
        public void update(Observable o, Object arg) {
            if (o instanceof WeatherData) {
                WeatherData weatherData = (WeatherData) o;
                this.temperature = weatherData.getTemperature();
                this.humidity = weatherData.getHumidity();
                this.pressure = weatherData.getPressure();
                display();
            }
        }
    }
    

    测试执行代码:

    public class WeatherStation {
        public static void main(String[] args) {
            WeatherData weatherData = new WeatherData(); // 主题
            CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay(); // 观察者
            BaiDuDisplay baiDuDisplay = new BaiDuDisplay(); // 百度观察者
            weatherData.addObserver(currentConditionsDisplay); // 增添观察者
            weatherData.addObserver(baiDuDisplay);// 增添观察者
            weatherData.setMeasurements(11, 22, 33);
        }
    }
    

    运行结果:

    百度温度为:11.0 百度湿度为:22.0 百度压力为:33.0
    当前温度为:11.0 当前湿度为:22.0 当前压力为:33.0
    

    是不是有很多相同的地方,归根结底都是使用的观察者模式,所以只要知道观察者模式由什么组成,什么时候用,那么你就真正了解了观察者模式;

    但是设计模式可不是随便看看这俩代码就能会用的,这也是设计模式不好学的一点,还是需要大量的代码练习去体会,最后就能灵活运用;

    注:在JDK中JavaBeans和Swing都实现了观察者模式,感兴趣可以尝试一下;

    总结

    总结一下观察者模式:

    • 观察者模式定义了对象之间一对多的关系
    • 主题通过一个共同的接口来更新观察者
    • 观察者和主题之间用松耦合的方式结合,主题不知道观察者的细节,只知道观察者实现了观察者接口
    • 当有多个观察者时,不能依赖特定的通知次序

    最后在这里展示一下观察者模式的UML类图:
    在这里插入图片描述

    在这篇文章中的例子的代码只是为了展示观察者模式,但是并不是最优的代码,一个好的代码可能要用到多种设计模式,这也是设计模式的一个难点;
    设计模式的学习没有什么技巧,只能在敲代码的过程中不断去体会,可能某一天你就会不自觉的使用设计模式,还是要多敲代码多踩坑多思考,希望我们一起努力!!

    展开全文
  • 本文以模糊秀体溞为研究对象,观察不同食物浓度下其生长和繁殖的特点,探讨模糊秀体溞成热带水体优势种的原因。以蛋白核小球藻为食物,浓度梯度设为0.05mg/L, O.1mg/L, 0.3mg/L, 0.6mg/L和1.Omg/L.小球藻浓度为0.05mg/L...
  • 1.设计模式之终极结合 今天星期五了(异常的兴奋,周末又可以去**了,提前祝大家周末愉快),完成项目经理的需求之后开始继续最近几期博客的编写。承接上一篇博客单例模式,这一期我们一...周末两天的真快,不...

    1.设计模式之终极结合

    今天星期五了(异常的兴奋,周末又可以去**了,提前祝大家周末愉快),完成项目经理的需求之后开始继续最近几期博客的编写。承接上一篇博客单例模式,这一期我们一起来了解一下观察者模式。我们最近几期博客打算主要讲一下单例模式、观察者模式、Build模式,目的是为了方便后期为大家带来RXJava+Retrofit2.0+Okhttp3结合使用的网络请求框架。

    周末两天过的真快,不过我一直在想我怎么才能写的简单明了,写出观察者模式的精华。

    2.观察者模式定义

    定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。

    3.观察者模式理解

    一个被观察者对象(ConcreteObservable也被叫为具体的主题ConcreteSubject)可以有一个或多个观察者(Observer)。观察者(这里说的就是具体观察者ConcreteObserver)可以是实现了 观察者(Observer) 接口的任意对象。一个 observable 实例改变后,调用 观察者(observable) 的notifyObservers()方法的应用程序会通过调用观察者的update() 方法来通知观察者该实例发生了改变。

    是不是感觉有点没理过来,很混乱。其实简单理解观察者模式就是:1个抽象的被观察者(java中的一个类Observable)和多个抽象的观察者(java中的一个接口Observer)两者之间的订阅——发布的关系;抽象的东西只是概念,所以我们要具体化,具体到我们的项目中的对象;就有了具体主题(ConcreteSubject 继承了观察者{Observable}类)和具体的观察者(ConcreteObserver实现了观察者{Observer}接口)。

    如果这样还是不好理解,我们就来个具体的例子,比如我们现在的微信公众号(把它认为是具体的主题继承了被观察者对象)以及很多微信用户(把它认为是具体的观察者实现 了观察者接口);我们用户只要订阅了某微信公众号,那么只要微信公众号发布信息,我们用户就会收到消息并调用更新方法(update())。这样一个关系叫观察者模式(更喜欢叫它为订阅——发布的模式)。

    4.UML类图

    观察者方法说明:

              只要改变了 observable 对象就调用此方法。

    被观察者方法说明:

              通知其所有观察者,内容发生变化。

              如果观察者与集合中已有的观察者不同,则向对象的观察者集中添加此观察者。

              从对象的观察者集合中删除某个观察者。

    角色介绍:

    • Subject(抽象主题):被观察者(Observable)的角色,抽象主题角色把所有观察者对象的引用都存入这个集合里,每个主题都可以有任意数量的观察者,抽象主题提供几个方法,可以增加和删除观察者对象以及通知观察者对象内容发生变化。
    • ConcreteSubject(具体主题):具体被观察者(ConcretObservable),该角色将有关状态存入具体观察者对象,在具体主题的内部状态发生改变时,给所有订阅过的观察者发出通知。
    • Observer(抽象观察者):观察者的抽象接口,该角色只有一个update()更新方法,当收到通知内容后更新自己的内容。
    • ConcreteObserver(具体观察者):该角色实现了抽象观察者接口,当收到主题的状态改变时更新自己的内容。

    5.JAVA API 

    • Observer(观察者接口Interface):

    •  Observable(被观察者) 

     

    6.观察者模式简单示例

    思前想后,我到底要做个什么例子啦,微信公众号——微信用户的(发布与订阅关系),确实比较贴近生活;但是好像这个例子有点烂大街了。我就做个项目经理(被观察者)——技术部员工(一群观察者,当然你说可不可只有一个技术人员了也可以的,全栈)这个例子吧;这个也挺好理解的吧,你被录用分配到技术部,不管你负责前端、后端、后台、数据库、还是美工;这样你们就要听项目经理的安排(订阅了),经理今天发布通知:必须在周5完成这个项目上线(发布)。是不是大家都受到消息开始干自己的事情,知道有一天前端干不下去了,离职了,是不是就解除这个订阅关系,不再受到通知。那么让我们一起来看代码: 

    • StaffObserver(具体观察者)
    import java.util.Observable;
    import java.util.Observer;
    
    /**
     * 员工观察者角色
     */
    public class StaffObserver implements Observer {
        private String staff;
        private String leader;
        LeaderSubject leaderSubject = new LeaderSubject("项目经理");
        public StaffObserver(String s) {
            staff = s;
        }
    
        @Override
        public void update(Observable observable, Object o) {
            System.out.println(staff+"接受到"+leader+"发送通知:"+o);
        }
    
        public void update(String str,Object o){
            leader = str;
            update(leaderSubject,o);
        }
    }
    
    • LeaderSubject(具体被观察者)
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Observable;
    
    /**
     * 领导主题角色继承被观察者
     */
    public class LeaderSubject extends Observable {
        private List<StaffObserver> mList;
        private String leader;
        public LeaderSubject(String s) {
            leader = s;
            this.mList = new ArrayList<StaffObserver>();
        }
        /**
         *
         * @param o 删除具体观察者
         */
        public synchronized void deleteObserver(StaffObserver o) {
            super.deleteObserver(o);
            if(mList != null && mList.size()>0){
                mList.remove(o);
            }
        }
    
        /**
         *
         * @param o 增加具体观察者
         */
        public synchronized void addObserver(StaffObserver o) {
            super.addObserver(o);
            if(mList !=null){
                mList.add(o);
            }
    
        }
    
        /**
         * 当调用setChanged(String msg)调用具体实现
         * @param msg
         */
        @Override
        public void notifyObservers(Object msg) {
            super.notifyObservers(msg);
            if(mList != null){
                for (StaffObserver s:mList) {
                    s.update(leader,msg);
                }
    
            }
        }
    
        /**
         * 被观察者内容发生改变
         * @param msg 改变的内容
         */
        public  void setChanged(String msg) {
            //消息更新,通知所有观察者
            notifyObservers(msg);
        }
    }
    
    • TestObserver(实现类)
    public class TestObserver {
        public static void main(String[] args) {
    
            LeaderSubject leaderSubject = new LeaderSubject("项目经理");
            StaffObserver frontEnd = new StaffObserver("FrontEnd");
            StaffObserver Database = new StaffObserver("Database");
            StaffObserver UI = new StaffObserver("UI");
    
    
            leaderSubject.addObserver(frontEnd);
            leaderSubject.addObserver(Database);
            leaderSubject.addObserver(UI);
            leaderSubject.setChanged("这周我们完成这个项目,并上线!");
    
            leaderSubject.deleteObserver(UI);
            System.out.println("------------------观察者减少");
            leaderSubject.setChanged("由于美工的离职,我们延迟上线!");
    
        }
    }
    
    • AS输出结果:

    • 记事本DOS命令输出结果: 

    是不是很简单,就1个具体观察者类和1个具体被观察这类,然后就是具体的实现类;员工的增加与减少不影响其他员工接受通知。在这个过程中整个流程都是依赖Observer和Observable这些抽象接口和类,所以StaffObserver和LeaderSubject完全没有耦合,保证了整个系统的灵活性和可拓展性。

    这就达到了我们解耦的效果了,观察者模式。

    7.观察者模式总结

    优点:

    观察者和被观察者没有耦合,增强了系统灵活性和可拓展性。

    缺点:

    被观察者是按顺序执行,如果业务负责,被观察者很多,那么就会影响效率;同时如果其中一个卡顿会影响后面的观察者,所以我们建议这种情况使用异步任务。

    8.更多请关注持续更新

    现在其实有很多观察者模式的具体实现:比如我们的Android源码BaseAdapter,开源框架EventBus,以及RxJava等等。

    如果想看的人多,我们会在这篇博客下继续更新EventBus和Rxjava的简单讲解以及源码分析。

    展开全文
  • 需求获取方法之观察与文档审查

    千次阅读 多人点赞 2020-04-24 11:05:58
    需求工程系列: 软件需求工程习题1(1~4章) ...1.采样观察(Sampling Observation):传统、简单的观察方法。 2.民族志(Ethnography):深入到用户中,长期、浸入式的观察方法。 3.话语分析(Discourse Analysis...

    需求工程系列:

    软件需求工程习题1(1~4章)
    软件需求工程习题2(5~7章)
    需求工程中的面谈和原型(8、9章)
    需求获取方法之观察与文档审查(10章)
    需求工程规格说明、需求验证、需求管理(11~13章)


    第十章 需求获取方法之观察与文档审查

    常见的观察方法:
    1.采样观察(Sampling Observation):传统、简单的观察方法。
    2.民族志(Ethnography):深入到用户中,长期、浸入式的观察方法。
    3.话语分析(Discourse Analysis):对用户之间的交谈行为的观察。
    4.协议分析(Protocol Analysis): 对用户任务的观察。
    5. 任务分析(Task Analysis):专门针对人机交互行为进行的观察。

    观察方法的适用情况:
    1.当用户无法完成主动的信息告知,或者用户与需求工程师之间的语言交流无法产生有效的结果时,采用观察方法。
    2.用户无法完成主动告知的原因归结于事件的情景性(情景性是指某些事件只有在和他们发生时的具体情景环境联系起来才能得到理解)。

    情景性的重要性质:
    突现(Emergent):集体促成 ,互动中突现 ,互动联系理解事件
    局部(Local) :事件及解释在特定的上下文环境 才成立
    暂时(Contingent) :事件及解释受活动演进过程的影响
    涉身(Embodied) :事件及解释需要特定参与者的认知和能力
    开放(Open) :对事件的解释要保持开放,以进一步完善
    模糊(Vague) :基于潜在知识 进行的模糊事件解释

    采样观察分为2种(据实际情况结合使用):
    时间采样:指定时间间隔进行观察(7个8小时工作日内5个10分钟)
    事件采样:有目的选取整个事件进行观察(董事会、用户培训会)
    在这里插入图片描述
    民族志:
    最早由人类学家提出,用于理解原始社会的社会机制。民族志在需求工程中的普及主要归因于CSCW(计算机支持协同工作)领域的研究和发展。目前,民族志成功应用的典型示例也都是复杂的协同问题 ,旨在了解工作的社会性因素,解决突现的情景性问题。

    文档审查:
    是一种传统的需求获取方法,是专门针对文档进行的需求获取活动。

    文档审查的获取对象包括:
     原有产品或竞争产品的需求规格说明
     硬数据
     客户的需求文档(委托开发的规格说明、招标书)

    文档审查的方法:
    在这里插入图片描述
    小结:
    在需求获取的诸多方法当中,观察的作用越来越显重要,它可以帮助解决情景性问题。
    采样观察的应用方法较为固定,但民族志的应用非常复杂,需要很多的实践积累。
    文档审查方法是专门用于处理各种硬数据的需求获取方法。

    为什么说在面谈时仅仅倾听是不够的,观察和记录所观察的内容同样是很重要的?
    面谈并不能确保用户能够将所有的信息都告知需求工程师,诸如一些语言无法确切描述的事务,而观察能够了解用户真正做什么,还能够获取到其他方法不能得到的用户及其工作环境的信息,还可以对从其他方法获取的信息进行确认,所以我们应该重视观察方法的应用。

    那应该观察些什么呢?
    观察客户所处的环境(得出何种需求才能更适合客户)。 观察客户行为、习惯特征(得出更适合客户使用的软件需求)。


    习题:

    1.当用户无法完成主动的信息告知,或与需求工程师之间的语言交流无法产生有效 的结果时,有必要采用( 观察法)。
    2.以下( C)不是情景性的重要性质?
    A、突现
    B、涉身
    C、完善
    D、模糊
    3.下列( D)不是需求获取常见的模型驱动方法?
    A、面向目标的方法
    B、基于场景的方法
    C、基于用例的方法
    D、基于采样的方法
    4.航空调度、证券交易、医疗手术控制等复杂的协同问题都具有( 突现)的情景性。
    5.民族志的一个主要应用目的就是研究和解决( 复杂的协同)问题。
    6.复杂的工作总会同时存在着正常流程和异常流程,异常流程大多是一些特殊情况下 的处理,限定了异常处理的上下文环境,即异常处理具有( 局部)的情景性。
    7.有很多重要工作的进行需要用户具备一定的认知,认知要求已经成了用户工作必备 的部分,即工作具有( 涉身)的情景性。
    8.采样观察是简单的观察方法,应用目的是发现(异常流程),验证用户所述知识和实际的一致性,以及发现默认知识。
    9.时间采样允许需求工程师建立指定的( 时间间隔)来观察用户的活动情况。
    10.文档审查主要获取对象包括相关产品的需求规格说明、( 硬数据)和客户的需求文档。
    11.文档分析通常是数据建模方法的一个基础部分,它是通过检查采集的硬数据来确定(潜在的需求)。
    12.如果当前存在一份客户的需求文档,就可以使用( 需求剥离)技术,从需求文档中抽取单个的需求并加入到新的需求文档之中。
    13.采样观察分为时间采样和( 事件采样)2种。
    14.文档审查是是专门针对文档进行的( 需求获取)活动。

    展开全文
  • java与设计模式-观察者模式

    千次阅读 2019-11-03 21:53:39
    java与设计模式-观察者模式 一、定义 观察者模式(Observer Pattern) 也叫做发布订阅模式(Publish/subscribe) ,它是一个在项 目中经常使用的模式, 其定义如下: Define a one-to-many dependency between ...
  • 区角活动是幼儿园教育教学活动中的重要...教师在区角活动的指导中应灵活多样,巧用图示法、观察记录法等有效策略,强调幼儿的主体地位,促进幼儿在快乐、主动的学习中富有个性的发展。关键词: 区角内容; 区角材料; ...
  • 采用野外及室内喂养观察、野外采集、室内解剖等方法,福寿螺(Pomacea canaliculata)消化系统的结构、性别差异及摄食行为进行了全面观察。结果表明:福寿螺消化系统结构独特,咽内具有颚片和齿舌,能够有效摄取食物...
  • 观察者模式 VS 发布订阅模式,面试官问我观察者模式和发布订阅模式的区别
  • 【设计模式】观察者模式

    千次阅读 2019-02-12 16:31:10
    博主声明: 转载请在开头附加本文链接及作者信息,并标记为... 观察者模式(Observer Pattern),是使用比较多的一种设计模式,它的模型一般情况下都是一多的模型,当然,也不排除有一一的情况发生。观察者(...
  • java设计模式之观察者模式

    千次阅读 热门讨论 2021-06-04 08:13:39
    需要设计开放型API,便于其他第三方也接入气象站获取数据。 提供温度、气压和湿度的接口 测量数据更新时,要实时的通知给第三方 普通方案 通过getXxx方法,可以让第三方接入,并得到相关信息. 当数据有更新时...
  • Android中观察者模式

    千次阅读 2017-10-16 17:27:18
    常用设计模式 观察者模式 举例 例子 实战应用 分析 讲解 应用 23种设计模式之一
  • 观察者模式在Android开发中使用频率非常高,最常用的地方如订阅–发布系统,类似微信公众号用户订阅和接收消息的场景,因为这个模式最重要的功能就是解耦,将被观察者和观察者解耦,使得它们之间的依赖性更小,甚至...
  • 关键词:OpenGL、键盘控制、透视投影、观察矩阵、LookAt、摄影机Camera类。
  • 扰动观察法 1.扰动观察法原理 扰动观察法是实现光伏发电最大功率点跟踪最常用的方法之一,通过光伏电池的P-U曲线我们可以知道:随着电压正向增大,功率会呈现先增后减的趋势,那么在这个电压正向增大的过程中,功率...
  • 将gym游戏里原始离散的discrete观察空间变为box类型的连续观察空间
  • 观察者模式实现表单验证

    千次阅读 2021-02-14 22:01:38
    人生天地之间,若白驹之隙,忽然而已。 观察者模式 观察者模式是这样一种设计模式。一个被称作被观察者的对象,维护一组被称为观察者的对象,这些对象依赖于被观察者,被观察者自动将自身的状态的任何变化通知...
  • 1. 观察者模式观察者模式是一种设计模式,其中一个对象(称为主体)根据对象(观察者)维护一个对象列表,自动通知他们状态的任何更改。意图:定义对象间的一种一多的依赖关系,当一个对象的状态发生改变时,...
  • 设计模式-观察者模式

    千次阅读 2019-04-04 09:22:43
    它定义了对象之间的一多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。观察者模式的优点在于实现了表示层和数据层的分离,并定义了稳定的更新消息传递机制,类别清晰,抽象...
  • 阿里P6+面试:介绍下观察者模式?

    万次阅读 多人点赞 2021-06-03 00:03:19
    有情怀,有干货,微信搜索【三太子敖丙】关注这个有一点点东西的程序员。 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点、资料以及我的系列文章。 消息队列(MQ),一种实现生产者到...
  • iOS键值观察KVO实例详解

    千次阅读 2016-11-16 08:55:23
    通过实例详细讲解iOS键值观察KVO的使用方法
  • 说道观察者模式,网络上有很多说法,什么一多了,还有什么主题了,角色了,看着都烦,虽说要用官方的话来描述一些东西,但是太官方的话,有几个看得懂,特别是菜鸟,小白估计就直接看不下去了。这里,我用最简单...
  • 为什么L2范数防止拟合

    万次阅读 2020-08-30 20:40:23
    都在说加正则化项防止拟合,可是为什么它可以防止拟合呢呢         说这个东西之前我们先讲一下什么是 L2 范数,以及什么是拟合 L2范数     &...
  •  本章我们讨论一个除前面的单例以及代理模式之外,一个WEB项目中有可能用到的设计模式,即观察者模式。  说起观察者模式,LZ还是非常激动的,当初这算是第一个让LZ感受到设计模式强大的家伙。当初LZ要做一个小型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 266,149
精华内容 106,459
关键字:

对观察过的事物能