Skip to content

Commit fb45c1f

Browse files
committed
add 中介模式
1 parent 86020e6 commit fb45c1f

File tree

1 file changed

+61
-2
lines changed

1 file changed

+61
-2
lines changed

17.中介模式.ipynb

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
"cell_type": "markdown",
55
"metadata": {},
66
"source": [
7-
"# 模式 Pattern\n"
7+
"# 中介模式 Mediator Pattern\n",
8+
"\n",
9+
"将对象间的交互和通讯封装在一个类中,各个对象间的通讯不必显式的声明和引用。这样就大大降低了系统的复制性和耦合程度。"
810
]
911
},
1012
{
@@ -21,7 +23,64 @@
2123
"outputs": [],
2224
"source": [
2325
"#nullable enable\n",
24-
"\n"
26+
"\n",
27+
"public abstract class Colleage{\n",
28+
" public abstract void Action();\n",
29+
" public string? State {get;set;}\n",
30+
" public Mediator? Mediator {get;set;}\n",
31+
"}\n",
32+
"public class ConcreteColleageA:Colleage{\n",
33+
" public override void Action(){\n",
34+
" Mediator?.DoActionFromAtoB();\n",
35+
" }\n",
36+
"}\n",
37+
"public class ConcreteColleageB:Colleage{\n",
38+
" public override void Action(){\n",
39+
" Mediator?.DoActionFromBtoA();\n",
40+
" }\n",
41+
"}\n",
42+
"public abstract class Mediator{\n",
43+
" protected Colleage _colleageA;\n",
44+
" protected Colleage _colleageB;\n",
45+
" public Mediator(Colleage colleageA,Colleage colleagB){\n",
46+
" _colleageA = colleageA;\n",
47+
" _colleageB = colleagB;\n",
48+
" }\n",
49+
" public abstract void DoActionFromAtoB();\n",
50+
" public abstract void DoActionFromBtoA();\n",
51+
"}\n",
52+
"public class ConcreteMediator:Mediator{\n",
53+
" public ConcreteMediator(Colleage colleageA,Colleage colleagB):base(colleageA,colleagB){}\n",
54+
" public override void DoActionFromAtoB(){\n",
55+
" _colleageB.State = _colleageA.State;\n",
56+
" }\n",
57+
" public override void DoActionFromBtoA(){\n",
58+
" _colleageA.State = _colleageB.State;\n",
59+
" }\n",
60+
"\n",
61+
"}\n",
62+
"\n",
63+
"ConcreteColleageA colleageA = new();\n",
64+
"ConcreteColleageB colleageB = new();\n",
65+
"ConcreteMediator mediator = new(colleageA,colleageB);\n",
66+
"colleageA.Mediator = mediator;\n",
67+
"colleageB.Mediator = mediator;\n",
68+
"\n",
69+
"colleageA.State = \"A old state\";\n",
70+
"colleageB.State = \"B old state\";\n",
71+
"\n",
72+
"colleageA.Action();\n",
73+
"\n",
74+
"colleageA.State.Display();\n",
75+
"colleageB.State.Display();\n",
76+
"\n",
77+
"colleageA.State = \"A new state\";\n",
78+
"colleageB.State = \"B new state\";\n",
79+
"\n",
80+
"colleageB.Action();\n",
81+
"\n",
82+
"colleageA.State.Display();\n",
83+
"colleageB.State.Display();"
2584
]
2685
}
2786
],

0 commit comments

Comments
 (0)