close
GateState interface:
1: interface GateState
2: {
3: void enter();
4: void payOK();
5: void payFailed();
6: }
Gate class:
1: class Gate
2: {
3: private GateState state;
4: public Gate(GateState _state)
5: {
6: this.state = _state;
7: }
8: public Gate()
9: {
10: state = new CloseGateState(this);
11: }
12: public void enter()
13: {
14: this.state.enter();
15: }
16: public void payOK()
17: {
18: this.state.payOK();
19: }
20: public void payFailed()
21: {
22: this.state.payFailed();
23: }
24: public void changeState(GateState _state)
25: {
26: this.state = _state;
27: }
28:
29: }
CloseGateState class:
1: class CloseGateState : GateState
2: {
3: Gate gate;
4: public CloseGateState(Gate gate)
5: {
6: Console.WriteLine("Gate is closed.");
7: this.gate = gate;
8: }
9: public void enter()
10: {
11: Console.Write("enter: ");
12: this.gate.changeState(new CloseGateState(this.gate));
13: }
14:
15:
16: public void payFailed()
17: {
18: Console.Write("payFailed: ");
19: this.gate.changeState(new CloseGateState(this.gate));
20: }
21:
22: public void payOK()
23: {
24: Console.Write("payOK: ");
25: this.gate.changeState(new OpenGateState(this.gate));
26: }
27: }
OpenGateState class:
1: class OpenGateState : GateState
2: {
3: Gate gate;
4: public OpenGateState(Gate _gate)
5: {
6: Console.WriteLine("Gate is open.");
7: this.gate = _gate;
8: }
9: public void enter()
10: {
11: Console.Write("enter: ");
12: this.gate.changeState(new CloseGateState(this.gate));
13: }
14:
15:
16: public void payFailed()
17: {
18: Console.Write("payFailed: ");
19: this.gate.changeState(new OpenGateState(this.gate));
20: }
21:
22: public void payOK()
23: {
24: Console.Write("payOK: ");
25: this.gate.changeState(new OpenGateState(this.gate));
26: }
27: }
Console portion:
1: class Program
2: {
3: static void Main(string[] args)
4: {
5: Console.WriteLine("case 1.");
6: Gate gate = new Gate();
7: gate.enter();
8: gate.payOK();
9: Console.WriteLine("-----------------------");
10: Console.WriteLine("case 2.");
11: gate.changeState(new CloseGateState(gate));
12: gate.enter();
13: gate.payFailed();
14:
15: Console.WriteLine("-----------------------");
16: Console.WriteLine("case 3.");
17: gate.changeState(new OpenGateState(gate));
18: gate.enter();
19: gate.payOK();
20:
21: Console.WriteLine("-----------------------");
22: Console.WriteLine("case 4.");
23: gate.changeState(new OpenGateState(gate));
24: gate.payFailed();
25: gate.payOK();
26: Console.ReadKey();
27: }
28: }
全站熱搜
留言列表