unit ApplicationContext; // Dit is een klasse bedoeld om data te delen over de applicatie heen. // Dit kan bijvoorbeeld usernaam, login token, computernaam, ... // Informatie die elk component/klasse kan gebruiken. // Voor schaalbaarheid en isolatie worden interfaces gebruikt die deze klasse implementeert. interface uses ObserverPattern, System.Generics.Collections; // SUB CONTEXTS: klassen die overeenkomen met bepaalde sub-context (bv. alles gerelateerd met authenticatie). // - UserServerService type TUserContext = class(TSubject) private FSessionKey: string; FGebruikersNaam: string; FIsOK: Boolean; FErrorMessage: string; FInternalErrorMessage: string; public procedure NotifyChanged(); property SessionKey: string read FSessionKey write FSessionKey; property GebruikersNaam: string read FGebruikersNaam write FGebruikersNaam; property IsOK: Boolean read FIsOK write FIsOK; property ErrorMessage: string read FErrorMessage write FErrorMessage; property InternalErrorMessage: string read FInternalErrorMessage write FInternalErrorMessage; end; TProductInformatie = class private FProductNr: Integer; FTekst: string; FKol1: string; FKol2: string; FKol3: string; FKol4: string; public property ProductNr: Integer read FProductNr write FProductNr; property Tekst: string read FTekst write FTekst; property Kol1: string read FKol1 write FKol1; property Kol2: string read FKol2 write FKol2; property Kol3: string read FKol3 write FKol3; property Kol4: string read FKol4 write FKol4; end; TProductsContext = class(TSubject) private FSessionKey: string; FProducten: TList; FIsOK: Boolean; FErrorMessage: string; FInternalErrorMessage: string; public constructor Create(); procedure NotifyChanged(); property Producten: TList read FProducten write FProducten; property IsOK: Boolean read FIsOK write FIsOK; property ErrorMessage: string read FErrorMessage write FErrorMessage; property InternalErrorMessage: string read FInternalErrorMessage write FInternalErrorMessage; end; TProductDetailContext = class(TSubject) private FSessionKey: string; FGeselecteerdProduct: TProductInformatie; FIsOK: Boolean; FErrorMessage: string; FInternalErrorMessage: string; public procedure NotifyChanged(); property GeselecteerdProduct: TProductInformatie read FGeselecteerdProduct write FGeselecteerdProduct; property IsOK: Boolean read FIsOK write FIsOK; property ErrorMessage: string read FErrorMessage write FErrorMessage; property InternalErrorMessage: string read FInternalErrorMessage write FInternalErrorMessage; end; // APPLICATION CONTEXT // Application context bevat alle sub-contexts TApplicationContext = class private FUserContext: TUserContext; FProductsContext: TProductsContext; FProductDetailContext: TProductDetailContext; public constructor Create(); property UserContext: TUserContext read FUserContext write FUserContext; property ProductsContext: TProductsContext read FProductsContext write FProductsContext; property ProductDetailContext: TProductDetailContext read FProductDetailContext write FProductDetailContext; end; implementation procedure TUserContext.NotifyChanged(); begin self.Change(); end; constructor TProductsContext.Create(); begin inherited Create(); FProducten := TList.Create(); end; procedure TProductsContext.NotifyChanged(); begin self.Change(); end; procedure TProductDetailContext.NotifyChanged(); begin self.Change(); end; constructor TApplicationContext.Create(); begin FUserContext := TUserContext.Create(); FProductsContext := TProductsContext.Create(); FProductDetailContext := TProductDetailContext.Create(); end; end.