📄 s2.model.ts2serverdatamodelfactory.pas
字号:
unit S2.Model.TS2ServerDataModelFactory;
interface
uses
Classes, S2.Tools.TS2ModelHandleList, S2.Model.IS2ModelFactory;
type
TS2ServerDataModelFactory = class(TInterfacedObject, IS2ModelFactory)
private
SystemObject: TComponent;
List: TS2ModelHandleList;
public // S2.Model.IS2ModelFactory
function GetModel(ModelClass: TClass): TObject; virtual;
procedure FreeModel(ModelClass: TClass); virtual;
public
constructor Create(SystemObject: TComponent);
destructor Destroy; override;
end;
implementation
uses
S2.Model.TS2Model, S2.Tools.TS2ModelHandle, S2.Model.TS2ServerDataModel, S2.Error.S2ServerDataModelNotFound;
{ TS2ServerDataModelFactory }
constructor TS2ServerDataModelFactory.Create(SystemObject: TComponent);
begin
Self.SystemObject := SystemObject;
List := TS2ModelHandleList.Create(SystemObject);
end;
destructor TS2ServerDataModelFactory.Destroy;
begin
List.Free;
inherited;
end;
procedure TS2ServerDataModelFactory.FreeModel(ModelClass: TClass);
var
ModelHandle: TS2ModelHandle;
begin
ModelHandle := List.Find(TS2ModelClass(ModelClass));
if Assigned(ModelHandle) then
ModelHandle.FreeModel
else
raise S2ServerDataModelNotFound.Create(ModelClass.ClassName);
end;
function TS2ServerDataModelFactory.GetModel(ModelClass: TClass): TObject;
var
ModelHandle: TS2ModelHandle;
begin
ModelHandle := List.Find(TS2ModelClass(ModelClass));
if not Assigned(ModelHandle) then List.Add(TS2ModelClass(ModelClass));
ModelHandle := List.Find(TS2ModelClass(ModelClass));
Result := TS2ServerDataModel(ModelHandle.GetModel).CreateClientDataModel;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -