当前位置:网站首页>Use of class methods and class variables
Use of class methods and class variables
2022-07-04 21:34:00 【pcplayer】
Preface
Delphi grammar , Class method class procedure and class function ; There are also class variables class var.
What can be used for ?
scene
WebService Server side , Multiple SoapDataModule Common method , In a DataModule Go inside .
Every time SOAP call , Need to be in SoapDataModule Implement interface methods , Create the DataModule Example , Call its methods , Then release .
Create and release code , Always repeat . also , No object buffer pool .
Of course , You can give this DataModule Implement an object buffer pool based on interface release , But the code architecture is more complex .
If you want to write less code , You can consider in this DataModule It implements its own creation, release and buffer management code .
background :
Please refer to the previous article of this article .
Code example
The following code passed the test
The module implements its own buffer pool code
unit UDmPool;
interface
uses
System.SysUtils, System.Classes;
type
TDmPool = class(TDataModule)
private
{ Private declarations }
class var FList: TList;
public
{ Public declarations }
class function GetMyDM: TDmPool;
class procedure ReleaseDM(DM: TDmPool);
class function GetPoolCount: Integer;
function HelloPool(const S: string): string;
end;
implementation
{%CLASSGROUP 'Vcl.Controls.TControl'}
{$R *.dfm}
{ TDmPool }
class function TDmPool.GetMyDM: TDmPool;
var
DM: TDmPool;
begin
if not Assigned(FList) then FList := TList.Create;
if FList.Count = 0 then
begin
DM := TDmPool.Create(nil);
Result := DM;
end
else
begin
DM := TDmPool(FList.Items[0]);
FList.Delete(0);
end;
end;
class function TDmPool.GetPoolCount: Integer;
begin
if not Assigned(FList) then
begin
Result := 0;
Exit;
end;
Result := FList.Count;
end;
function TDmPool.HelloPool(const S: string): string;
begin
Result := 'Hello, ' + S + '; This is DmPool';
end;
class procedure TDmPool.ReleaseDM(DM: TDmPool);
begin
FList.Add(DM);
end;
end.stay SOAPDATAMODULE Inside the code that calls it
function TSoapDM_A.HelloPool(const S: string): string;
var
DM: TDmPool;
begin
DM := TDmPool.GetMyDM;
Result := DM.HelloPool('SoapDM_A' + S);
TDmPool.ReleaseDM(DM);
end;The server-side interface shows the code of the number of buffer pools
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label2.Caption := 'PoolCount = ' + TDmPool.GetPoolCount.ToString;
end;Conclusion :
Use class function and class var It can solve the expectation of implementing repeated code in one class . At the same time, implement a simple buffer pool .
边栏推荐
- Flutter TextField示例
- Solution of 5g unstable 5g signal often dropped in NetWare r7000 Merlin system
- [public class preview]: basis and practice of video quality evaluation
- Redis cache
- 华为ensp模拟器 三层交换机
- Y56. Chapter III kubernetes from entry to proficiency -- business image version upgrade and rollback (29)
- TCP三次握手,四次挥手,你真的了解吗?
- Can be displayed in CAD but not displayed in print
- MP3是如何诞生的?
- Routing configuration and connectivity test of Huawei simulator ENSP
猜你喜欢

IIC (STM32)

Huawei ENSP simulator realizes communication security (switch)

解析互联网时代的创客教育技术

奋斗正当时,城链科技战略峰会广州站圆满召开

CAD中能显示打印不显示

MP3是如何诞生的?

【LeetCode】17、电话号码的字母组合

Day24: file system
![[C language] deep understanding of symbols](/img/4b/26cf10baa29eeff08101dcbbb673a2.png)
[C language] deep understanding of symbols

Y56. Chapter III kubernetes from entry to proficiency -- business image version upgrade and rollback (29)
随机推荐
【微服务|SCG】Predicate的使用
minidom 模塊寫入和解析 XML
Huawei ENSP simulator layer 3 switch
Golang面试整理 三 简历如何书写
Explication détaillée du mécanisme de distribution des événements d'entrée multimodes
redis缓存
Jerry's ad series MIDI function description [chapter]
Routing configuration and connectivity test of Huawei simulator ENSP
Liu Jincheng won the 2022 China e-commerce industry innovation Figure Award
Google colab踩坑
Difference between ApplicationContext and beanfactory (MS)
Redis cache
For MySQL= No data equal to null can be found. Solution
Shutter WebView example
【C语言】符号的深度理解
PS vertical English and digital text how to change direction (vertical display)
Jerry's ad series MIDI function description [chapter]
输入的查询SQL语句,是如何执行的?
Redis bloom filter
MP3是如何诞生的?