⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s2.model.ts2serverdatamodelfactory.pas

📁 轉載的程序應用框架
💻 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 + -