設計模式、用Delphi描述-->Reference Count pattern (轉)
(引用記數)
起源
Reference Count模式是一種相對簡單,但實用性很強,比如COM中的引用記數就是COM生命週期控制的基礎,同樣也是Observer模式(詳細請見Observer模式)的生命週期的基礎。
目的:namespace prefix = o ns = "urn:schemas--com::office" />
利用Reference Count的模式來控制的生命週期。對於引用記數中物件將是可利用的物件,否則物件將析構自身。
動機
Reference Count模式的基礎與Lock的基礎很相類似。唯一不同的是Lock預先定義、固定的。它的具體的類的應用時也與Lock模式類似。Reference Count模式預設一種行為方法:SetReferenced,同樣當具體使用些模式時,你可以建立自己習慣的方法。如
Reference Count模式在singleton模式中會有比較好的應用。
應用
unit ReferenceCount;
TRefCountSample = class (T)
private
FReferenceCnt: Integer;
protected
function Referenced: Boolean;
procedure SetReferenced(IsReferenced: Boolean);
public
procedure AddReference;
procedure RemoveReference;
end;
{
*******************************TRefCountSample*******************************
}
procedure TRefCountSample.AddReference;
begin
Inc(FReferenceCnt);
if FReferenceCnt = 1 then SetReferenced(True);
end;
function TRefCountSample.Referenced: Boolean;
begin
Result := (FReferenceCnt <> 0);
end;
procedure TRefCountSample.RemoveReference;
begin
Dec(FReferenceCnt);
if FReferenceCnt = 0 then SetReferenced(False);
end;
procedure TRefCountSample.SetReferenced(IsReferenced: Boolean);
begin
if not Referenced then Free;
end;
例項:IUnknown
IUnknown = interface
['{00000000-0000-0000-C000-000000000046}']
…
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991339/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式、用Delphi描述-->Lock pattern (轉)設計模式
- 設計模式、用Delphi描述-->Visitor模式 (轉)設計模式
- 設計模式、用Delphi描述-->Factory Method模式 (轉)設計模式
- 設計模式、用Delphi描述-->Abstract Factory模式 (轉)設計模式
- 設計模式、用Delphi實現---->Builder模式 (轉)設計模式UI
- 設計模式、用Delphi實現---->Singleton 模式 (轉)設計模式
- Delphi設計模式-Abstract Factory (轉)設計模式
- 設計模式-策略模式(strategy pattern)設計模式
- 設計模式-Template Method Pattern設計模式
- 21:Count Down設計模式設計模式
- 設計模式之策略模式和狀態模式(strategy pattern & state pattern)設計模式
- 設計模式--裝飾模式(Decorator Pattern)設計模式
- 設計模式之代理模式(proxy pattern)設計模式
- 設計模式-裝飾模式(Decorator Pattern)設計模式
- 設計模式--建造者模式(Builder Pattern)設計模式UI
- 設計模式--原型模式(Prototype Pattern)設計模式原型
- 設計模式-狀態模式(State Pattern)設計模式
- 1/24 設計模式之策略設計模式 Strategy Pattern設計模式
- 設計模式之——Singleton pattern設計模式
- 設計模式之觀察者模式(Observer Pattern)設計模式Server
- C#設計模式——代理模式(Proxy Pattern)C#設計模式
- 設計模式之狀態模式---State Pattern設計模式
- JAVA設計模式之 代理模式【Proxy Pattern】Java設計模式
- 4/24 設計模式之命令設計模式 Command Pattern設計模式
- C++ :引用計數(reference count) 實現C++
- Delphi實用程式設計經驗二 (轉)程式設計
- 重識設計模式-建造者模式(Builder Pattern)設計模式UI
- 設計模式之裝飾器模式(decorator pattern)設計模式
- [Design Pattern With Go]設計模式-工廠模式Go設計模式
- 設計模式之單例模式(Singleton Pattern)設計模式單例
- 設計模式--抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式--工廠方法模式(Factory Method Pattern)設計模式
- 設計模式十: 生成器模式(Builder Pattern)設計模式UI
- C#設計模式-建造者模式(Builder Pattern)C#設計模式UI
- C#設計模式-原型模式(Prototype Pattern)C#設計模式原型
- C++設計模式——命令模式(command pattern)C++設計模式
- Java設計模式——單例模式(Singleton pattern)Java設計模式單例
- C++ 設計模式 裝飾模式(Decorator Pattern)C++設計模式