Bonjour,

J'implémente le motif Etat en Free Pascal.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
TState = class
...
end;
 
TContext = class
    State : TState;
    procedure SetState(AState: TState);
end;
 
TDefaultState = class(TState)
....
 
procedure TContext.SetState(AState: TState);
begin
    Self.State.Free;
    Self.State := AState;
end;
 
procedure TDefaultState.Run;
begin
    if ... then
        Self.Context.SetState(TNewState.Create(Self.Context));
end;
Je me pose une question concernant la libération de l'objet. Lorsque je change d'état, je libère donc l'ancien objet état en appelant TContext.SetState... Est-ce la bonne façon de faire ?