Skip to content

Commit 1e5bc9a

Browse files
committed
mediator pattern
1 parent 654b40b commit 1e5bc9a

5 files changed

Lines changed: 76 additions & 60 deletions

File tree

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package com.anxpp.designpattern.mediator;
2+
23
//同事(接口)
34
public interface IPersistent {
4-
void getData(Object data);
5-
void getData(Object data,Midiator midiator);
6-
void saveData();
5+
void getData(Object data);
6+
7+
void getData(Object data, Midiator midiator);
8+
9+
void saveData();
710
}
Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
11
package com.anxpp.designpattern.mediator;
2+
23
//具体中介者
34
public class Midiator {
4-
PersistentDB persistentDB;
5-
PersistentFile persistentFile;
6-
public Midiator setPersistentDB(PersistentDB persistentDB) {
7-
this.persistentDB = persistentDB;
8-
return this;
9-
}
10-
public Midiator setPersistentFile(PersistentFile persistentFile) {
11-
this.persistentFile = persistentFile;
12-
return this;
13-
}
14-
public void notifyOther(IPersistent persistent,Object data){
15-
if(persistent instanceof PersistentDB)
16-
persistentFile.getData(data);
17-
if(persistent instanceof PersistentFile)
18-
persistentDB.getData(data);
19-
}
5+
PersistentDB persistentDB;
6+
PersistentFile persistentFile;
7+
8+
public Midiator setPersistentDB(PersistentDB persistentDB) {
9+
this.persistentDB = persistentDB;
10+
return this;
11+
}
12+
13+
public Midiator setPersistentFile(PersistentFile persistentFile) {
14+
this.persistentFile = persistentFile;
15+
return this;
16+
}
17+
18+
public void notifyOther(IPersistent persistent, Object data) {
19+
if (persistent instanceof PersistentDB)
20+
persistentFile.getData(data);
21+
if (persistent instanceof PersistentFile)
22+
persistentDB.getData(data);
23+
}
2024
}
Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
package com.anxpp.designpattern.mediator;
2+
23
//具体同事
3-
public class PersistentDB implements IPersistent{
4-
private Object data;
5-
@Override
6-
public void getData(Object data, Midiator midiator) {
7-
getData(data);
8-
midiator.notifyOther(this, data);
9-
}
10-
@Override
11-
public void saveData() {
12-
System.out.println(data + " 已保存到数据库");
13-
}
14-
@Override
15-
public void getData(Object data) {
16-
this.data = data;
17-
saveData();
18-
}
4+
public class PersistentDB implements IPersistent {
5+
private Object data;
6+
7+
@Override
8+
public void getData(Object data, Midiator midiator) {
9+
getData(data);
10+
midiator.notifyOther(this, data);
11+
}
12+
13+
@Override
14+
public void saveData() {
15+
System.out.println(data + " 已保存到数据库");
16+
}
17+
18+
@Override
19+
public void getData(Object data) {
20+
this.data = data;
21+
saveData();
22+
}
1923
}
Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
package com.anxpp.designpattern.mediator;
2+
23
//具体同事
3-
public class PersistentFile implements IPersistent{
4-
private Object data;
5-
@Override
6-
public void getData(Object data, Midiator midiator) {
7-
getData(data);
8-
midiator.notifyOther(this, data);
9-
}
10-
@Override
11-
public void saveData() {
12-
System.out.println(data + " 已保存到文件");
13-
}
14-
@Override
15-
public void getData(Object data) {
16-
this.data = data;
17-
saveData();
18-
}
4+
public class PersistentFile implements IPersistent {
5+
private Object data;
6+
7+
@Override
8+
public void getData(Object data, Midiator midiator) {
9+
getData(data);
10+
midiator.notifyOther(this, data);
11+
}
12+
13+
@Override
14+
public void saveData() {
15+
System.out.println(data + " 已保存到文件");
16+
}
17+
18+
@Override
19+
public void getData(Object data) {
20+
this.data = data;
21+
saveData();
22+
}
1923
}
Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.anxpp.designpattern.mediator;
2+
23
public class TestUse {
3-
public static void main(String args[]){
4-
Object data = "数据";
5-
PersistentDB persistentDB = new PersistentDB();
6-
PersistentFile persistentFile = new PersistentFile();
7-
Midiator midiator = new Midiator();
8-
midiator.setPersistentDB(persistentDB).setPersistentFile(persistentFile);
9-
persistentDB.getData(data, midiator);
10-
persistentFile.getData(data, midiator);
11-
}
4+
public static void main(String args[]) {
5+
Object data = "数据";
6+
PersistentDB persistentDB = new PersistentDB();
7+
PersistentFile persistentFile = new PersistentFile();
8+
Midiator midiator = new Midiator();
9+
midiator.setPersistentDB(persistentDB).setPersistentFile(persistentFile);
10+
persistentDB.getData(data, midiator);
11+
persistentFile.getData(data, midiator);
12+
}
1213
}

0 commit comments

Comments
 (0)