设计模式、用Delphi描述-->Reference Count pattern

原创 2001年10月30日 10:53:00

 

Reference Count 模式(引用记数)

起源

Reference Count模式是一种相对简单但实用性很强比如COM中的引用记数就是COM生命周期控制的基础同样也是Observer模式(详细请见Observer模式)的生命周期的基础。

目的<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

利用Reference Count的模式来控制对象的生命周期。对于引用记数中对象将是可利用的对象,否则对象将析构自身。

动机

Reference Count模式的基础与Lock的基础很相类似。唯一不同的是Lock预先定义、固定的。它的具体的类的应用时也与Lock模式类似。Reference Count模式默认一种行为方法:SetReferenced,同样当具体使用些模式时,你可以创建自己习惯的方法。如

 

Reference Count模式在singleton模式中会有比较好的应用。

应用

unit ReferenceCount;

 

 

 

  TRefCountSample = class (TObject)

  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;

Delphi实例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;

 

设计模式、用Delphi描述-->Lock pattern

 Lock pattern起源lock pattern是Delphi中 TStrings数据更新控制的基础。在本段后面将例举部分Tstrings、TstringList的代码目的为类提供一个临时的访问...
  • programlover
  • programlover
  • 2001年10月26日 12:38
  • 697

各用一句话描述23种设计模式

Abstract Factory(抽象工厂):提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体的类。Adapter(适配器):将一个类的接口转换成调用者希望的另外一个接口。适配器模式是...
  • hayre
  • hayre
  • 2016年09月06日 16:09
  • 993

reference count(引用计数)

稍微总结了下引用计数以及它的实际应用
  • keyouan2008
  • keyouan2008
  • 2010年07月30日 11:00
  • 2352

设计模式总结之Observer Pattern(观察者模式)

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。...
  • cooldragon
  • cooldragon
  • 2016年08月11日 00:53
  • 961

Redis命令

redis命令 key命令 命令 描述 DEL key 在key存在时删除key DUMP key 序列话给定key,并返回被序列化的值 EXISTS key 检查给定ke...
  • wzzfeitian
  • wzzfeitian
  • 2014年12月22日 11:37
  • 13139

设计模式(创建型)之原型模式(Prototype Pattern)

要理解原型原型模式必须先理解Java里的浅复制和深复制。有的地方,复制也叫做克隆。Java提供这两种克隆方式。 因为Java中的提供clone()方法来实现对象的克隆,所以Prototype模式实现一...
  • yanbober
  • yanbober
  • 2015年04月29日 11:28
  • 3028

什么是设计模式?(Design pattern)--和生活结合更好理解

什么是设计模式 一套被反复使用、多数人知晓的、经过分类编目的、代码 设计经验 的总结;使用设计模式是为了 可重用 代码、让代码 更容易 被他人理解、保证代码 可靠性;设计模式使代码编制  真正工程...
  • guo13313
  • guo13313
  • 2017年04月09日 07:50
  • 947

设计模式总结之Visitor Pattern(访问者模式)

表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。...
  • cooldragon
  • cooldragon
  • 2016年08月12日 12:10
  • 4132

设计模式 - 迭代器模式(iterator pattern) 详解

迭代器模式(iterator pattern) 详解本文地址: http://blog.csdn.net/caroline_wendy迭代器模式(iterator pattern) : 提供一种方法顺...
  • u012515223
  • u012515223
  • 2014年06月27日 14:03
  • 1910

关于Python中,re.sub(pattern, repl, string, count=0, flags=0)方法的个人理解

在Python中,re模块用来实现正则表达式功能。 pattern: 是re.compile()方法生成Pattern类型,也就是索要匹配的模式。 repl : 可以是一段字符串,或者是一个方法 ...
  • yzj99848873
  • yzj99848873
  • 2015年08月27日 12:01
  • 1935
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式、用Delphi描述-->Reference Count pattern
举报原因:
原因补充:

(最多只允许输入30个字)