-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathtemp_class.java
executable file
·106 lines (103 loc) · 3.1 KB
/
temp_class.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package temp_package;
import java.util.*;
import java.io.*;
// ñìîòðÿùèé çà îáúåêòîì, êîòîðûé áóäåò èçìåíÿòüñÿ
// îáúåêò, êîòîðûé áóäåò óâåäîìëåí îá âîçìîæíûõ èçìåíåíèÿõ
// êëàññ êîòîðûé ñîäåðæèò èíòåðôåéñ Observer(íàáëþäàòåëü)
class Watcher implements Observer{
String name="";
Watcher(String name){
this.name=name;
}
public void update(Observable arg0, Object arg1) {
System.out.println(name+"/Watcher, âûçâàí update:"+arg1);
}
}
// êëàññ êîòîðûé ÿâëÿåòñÿ ðàñøèðåíèåì êëàññà OBservable (íàáëþäàåìûé)
class Watched extends Observable{
private String name="";
Watched(String name){
this.name=name;
}
void ring(String parameter){
this.setChanged();// çàôèêñèðîâàòü èçìåíåíèÿ â îáúåêòå
this.notifyObservers(parameter);// âûçâàòü âñåõ Observers, êîòîðûå çàðåãåñòðèðîâàíû äëÿ äàííîãî îáúåêòà
}
}
class my_class implements Serializable{
String s;
int i;
float f;
my_class(){
this.s=new String("temp string");
this.i=50;
this.f=100;
}
my_class(String s,int i,float f){
this.s=s;
this.i=i;
this.f=f;
}
public String toString(){
String s="";
s="i: "+i+" f:"+f+" s:"+s;
return s;
}
}
class sample_Serialization{
my_class temp_data1=new my_class();
my_class temp_data2=new my_class();
// óïàêîâêà îáúåêòà êëàññà my_class implements Serializable â ôàéë
public boolean pack(my_class object_for_pack,String filename){
try{
// ïîòîê äëÿ çàïèñè â ôàéë
FileOutputStream fos=new FileOutputStream(filename);
// îáåðòêà äëÿ çàïèñè îáúåêòà
ObjectOutputStream oos=new ObjectOutputStream(fos);
// çàïèñü îáúåêòà
oos.writeObject(object_for_pack);
oos.flush();
oos.close();
fos.close();
return true;
}
catch(Exception e){
System.out.println("Error in save object to "+filename);
return false;
}
}
// ðàñïàêîâêà îáúåêòà êëàññà my_class implements Serializable èç ôàéëà
public my_class unpack(String filename){
try{
// ïîòîê äëÿ ÷òåíèÿ èç ôàéëà
FileInputStream fis=new FileInputStream(filename);
// îáåðòêà äëÿ ÷òåíèÿ èç ôàéëà
ObjectInputStream ois=new ObjectInputStream(fis);
// ÷òåíèå îáúåêòà èç ôàéëà
return (my_class)ois.readObject();
}
catch(Exception e){
System.out.println("Error in read object from "+filename);
return null;
}
}
}
public class temp_class {
public static void main(String args[]){
Watcher master1=new Watcher("master1");
Watcher master2=new Watcher("master2");
Watched slave1=new Watched("slave1");
Watched slave2=new Watched("slave2");
slave1.addObserver(master1);// äîáàâëÿåì íàáëþäàòåëÿ äëÿ slave1 - master1
slave1.addObserver(master2);// äîáàâëÿåì íàáëþäàòåëÿ äëÿ slave1 - master2
slave2.addObserver(master2);// äîáàâëÿåì íàáëþäàòåëÿ äëÿ slave2 - master2
slave1.ring("RING SLAVE1");
slave2.ring("ring slave2");
//-------------------
sample_Serialization temp=new sample_Serialization();
my_class temp_my_class_1=new my_class();
temp.pack(temp_my_class_1, "c:\\pack");
System.out.println("original:"+temp_my_class_1);
System.out.println("readable:"+temp.unpack("c:\\pack"));
}
}