File tree Expand file tree Collapse file tree
src/com/anxpp/designpattern/mediator Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11package com .anxpp .designpattern .mediator ;
2+
23//同事(接口)
34public 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}
Original file line number Diff line number Diff line change 11package com .anxpp .designpattern .mediator ;
2+
23//具体中介者
34public 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}
Original file line number Diff line number Diff line change 11package 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}
Original file line number Diff line number Diff line change 11package 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}
Original file line number Diff line number Diff line change 11package com .anxpp .designpattern .mediator ;
2+
23public 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}
You can’t perform that action at this time.
0 commit comments