观察者模式实验报告
时间:2021-10-07 来源:博通范文网 本文已影响 人
软件设计与体系结构
实 实
验
报
告 课程名称 软件设计与体系结构 课程编号 0920116 实验项目名称
观察者模式案例 学号
班级
姓名
专业
学生所在学院
指导教师
实验室名称地点
实验时间
实验名称:
观察者模式案例
实验目的:观察者模式(Observer Pattern)是设计模式中行为模式的一种,它解决了上述具有一对多依赖关系的对象的重用问题。此模式的参与者分为两大类,一类是被观察的目标,另一类是观察该目标的观察者们。正因为该模式是基于“一对多”的关系,所以该模式一般是应用于由一个目标对象和 N 个观察者对象组成(当然也可以扩展为有多个目标对象,但我们现在只讨论前者)的场合。当目标对象的状态发生改变或做出某种行为时,正在观察该目标对象的观察者们将自动地、连锁地作出相应的响应行为。
通过本次实验了解观察者模式的原理。并能够运用观察者模式来进行编程。
实验内容
1 UML类图
2 程序的源代码 public class ObserverApp {
public static void main(String args[]) {
// Create the Subject and Observers.
ConcreteSubject i = new ConcreteSubject("IBM", 120.10);
ConcreteSubject j = new ConcreteSubject("IBM", 120.10);
NameObserver nameObs = new NameObserver();
PriceObserver priceObs = new PriceObserver("IBM","张三");
PriceObserver priceObss = new PriceObserver("IBM","李四");
// Add those Observers!
i.addObserver(nameObs);
i.addObserver(priceObs);
j.addObserver(nameObs);
j.addObserver(priceObss);
// Make changes to the Subject.
i.setName("张三");
j.setName("李四");
i.setPrice(120.10);
j.setPrice(120.10);
i.setPrice(121.00);
j.setPrice(121.00);
i.setPrice(120.50);
j.setPrice(120.50);
i.setPrice(120.75);
j.setPrice(120.75);
}
}
import java.util.Observable; public class ConcreteSubject extends Observable{
private String name;
private double price;
public ConcreteSubject(String name, double price) {
this.name = name;
this.price = price;
}
public String getNameone() {return name;}
public double getPrice() {return price;}
public void setName(String name) {
this.name = name;
setChanged();
notifyObservers(name);
}
public void setPrice(double price) {
this.price = price;
setChanged();
notifyObservers(new Float(price));
}
}
import java.util.Observer; import java.util.Observable; public class NameObserver implements Observer{
private String name;
public NameObserver() {
name = null;
}
public void update(Observable obj, Object arg) {
if (arg instanceof String) {
name = (String)arg;
}
}
}
import java.util.Observer; import java.util.Observable; public class PriceObserver implements Observer{
private float price;
private String name1;
private String name2;
public PriceObserver(String namef,String names){
price = 0;
name1 = namef;
name2 = names;
}
public void update(Observable obj, Object arg) {
if (arg instanceof Float) {
price = ((Float)arg).floatValue();
System.out.println("通知到股民
"+name2+" "+name1+"最新股价为"+price);
}
} }
3实验截图
对该模式的认识
经过本次观察者模式的实验,通过自己动手编代码,是自己理解观察者模式机制,并且知道观察者模式有以下的优点:第一、观察者模式在被观察者和观察者之间建立一个抽象的耦合。被观察者角色所知道的只是一个具体观察者列表,每一个具体观察者都符合一个抽象观察者的接口。被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。
由于被观察者和观察者没有紧密地耦合在一起,因此它们可以属于不同的抽象化层次。如果被观察者和观察者都被扔到一起,那么这个对象必然跨越抽象化和具体化层次。
第二、观察者模式支持广播通讯。被观察者会向所有的登记过的观察者发出通知。经过本次实验课的练习,我明白了编代码也是一种技巧,而设计模式便是大家提炼出来的有技巧编代码。使我对软件设计与体系结构这门课有了浓厚的兴趣,相信在学习这门课的知识,会让我获益良多。
扣分原因(有扣分时填写)
扣分
最喜欢开头!
作者太给力了。
广西大学环境工程基础实验
实验题目: 湖塘水体和沉积物中微生物的观察
姓名:学号:
班级:组别:
指导教师:
实验(1)湖塘水体和沉积物中微生物的观察和计数
1.实验概述
1.1实验目的及要求
水体和沉积物是水生生物繁衍生息的基本场所。本实验通过实地调查和实验室观察实验,对湖塘水体和沉积物中微生物观察和定性,初步了解湖塘水体和沉积物中微生物的种类和分类;了解其对水体净化的正面和负面的影响。
1.2实验原理
(1)显微镜的原理
(2)血球计数板的结构和计算方法。
血球计数板是一块比较厚的特制玻片。玻片中央刻有4条槽,中央两条槽之间的平面比其他平面略低,中央有一个小槽,槽两边的平面上刻有9个大方格,中间的一个大方格为计数室,其长和宽均为1mm,深度0.1mm,体积0.1m3。计数室的规格是把大方格分成16个中方格,每一个中方格有分成25个小方格,总共有400个小格。
血球计数板的计算方法是:先求得每个中方格中微生物的平均值,乘以中格数,即为一个大格中的总微生物数,再乘以10000,即为稀释后的溶液中的总微生物数。如要换成原液中的微生物总数,乘以稀释倍数即可。
为简化计,通常取4个角上的4个中格进行计数,取其平均值,作为每个中格中微生物的平均值。
计算公式:微生物数(mL)=(100个小格内的微生物数/100)*400*10000*稀释倍数
2.实验内容
2.1实验方案设计
选择一个池塘,对湖塘和水体和沉积物采样,观察其中微生物并计数。要求手绘观察图像,计算微生物数量。
2.1.1实验设备和材料
(1)实验设备
显微镜、血球计数板、载玻片、盖玻片、滴管、移液管
(2)实验材料
校园池塘的水体和沉积物
2.2实验过程(实验步骤、记录、数据、分析 )
(1)用压滴法制作表本片
取一块洁净的载玻片置于实验平台上,用滴管吸取湖水或含有沉积物的混合液,滴加在载玻片中央,用干净的盖玻片覆盖在滴液上,不要有气泡,即制成标本片。
(2)用显微镜观察标本片上的微生物。
(3)加被测样品到血球计数板
取干净的血球计数板,用盖玻片盖住计数室,用细口滴管吸取少量已经充分摇匀的湖水和沉积物的混合液,滴于盖玻片边缘,微生物自行深入计数室,静止5-10min,待微生物自然沉降稳定后计数。
(4)计数
先用低倍镜寻找大方格网的位置(视野不要太亮),找到计数格后,换用40倍物镜观察计数。
2.3结论
手绘观察到的微生物的形状,相对大小(见附图)
计算样品微生物数量
2.4 建议(如果有)
实验(2)湖塘水体和沉积物中微生物的革兰氏染色和定性
1.实验概述
1.1实验目的及要求
水体和沉积物是水生生物繁衍生息的基本场所。本实验通过实地调查和实验室观察实验,对湖塘水体和沉积物中微生物观察和定性,初步了解湖塘水体和沉积物中微生物的种类和分类;了解其对水体净化的正面和负面的影响。
1.2实验原理
微生物细胞由蛋白质、核酸等两性电解质及其它成分组成,表现出两性电解质的性质。细菌的等电点pI在2-5之间,所以当pH>5时,细菌带负电荷,容易与带正电荷的碱性染料结合而被染色。微生物体内的不同结构和染料的结合能力不同,故可用不同染料对微生物的不同结构分别染色。
2.实验内容
2.1实验方案设计
对池塘水体和沉积物中得细菌进行革兰氏染色和定性,进行微生物形态图的绘制。
2.1.1实验设备和材料
(1)实验设备
显微镜、接种环、载玻片、酒精灯。
(2) 试剂
草酸铵结晶紫染液、革兰氏碘液、95%乙醇、番红
(3) 实验材料
校园池塘的水体和沉积物
2.2实验过程(实验步骤、记录、数据、分析 )
(1)涂片
取干净的载玻片于实验台上,在正面边角作记号,滴一滴无菌蒸馏水在玻片中央,灼烧接种环,冷却后取样品,与玻片上水滴混匀,在玻片上涂布成一层均匀的薄层,涂布面不宜过大。
(2)固定
即干燥,干燥过程最好在空气中晾干。为加速干燥,可在微小火焰上烘干,烘干后在火焰上方快速通过3-4次,使菌体完全固定在载玻片上。不宜长时间高温烘烤,易致急速失水使菌体变形。
(3)初染
滴加草酸铵结晶紫染色液染色1-2min,水洗。
(4)媒染
滴加革兰氏碘液,染1-2min,水洗。
(5)脱色
滴加95%乙醇,洗约45s,接着水洗。或滴加95%乙醇,将玻片摇晃几次即倾倒乙醇,如此重复2-3次后水洗。
(6)复染
滴加番红,染2-3min,水洗并干燥。
(7)镜检
显微镜观察。
2.3结论
观察颜色,并判断是G(紫色)还是G(红色)。手绘观察到的微生物图像,标明颜色。
2.3.1注意事项:
(1)涂片所用载玻片要洁净无油渍。
(2)细菌不宜多,涂片不宜厚,宜薄而均匀。
(3)染色过程中勿使染色液干涸。用水洗后,应该甩去玻片上残水以免染色液被稀释而影响染色效果。
(4)革兰氏染色成败的关键是脱色时间是否合适。如脱色过度,G易被误认为G。而脱色时间过短,G易被误认为G。脱色时间长短还受涂片厚薄,脱色时玻片晃动程度影响。
2.4 建议(如果有)
2.思考题
(1)涂片为何要固定?固定时要注意什么?
答:原因有三
1、固定细菌,防止冲掉
2、变形蛋白易染色
3、杀死细菌,防止感染。实验中固定是用酒精灯烘干水样,应注意控制温度,控制时间,防止将菌体烧成灰烬,无法染色。固定时用载玻片背面靠近火源,而不是直接烘载玻片正面。
(2) 革兰氏染色如果只做1-4步,不用番红复染,能否分辨革兰氏染色结果?为什么?
答:能。在酒精脱色后,不被酒精脱色而保留紫色者为革兰氏阳性菌(G+),被酒精脱色为革兰氏阴性菌。最后一步用番红染液复染,是为了让结果更清楚。
(3)革兰氏染色在微生物学中有何实践意义?
指导教师评语及成绩:
成绩:指导教师签名
批阅日期