`
cooldesigner
  • 浏览: 68027 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

Lock pattern

阅读更多

起源<o:p></o:p>

lock patternDelphi TStrings数据更新控制的基础。在本段后面将例举部分TstringsTstringList的代码

目的<o:p></o:p>

为类提供一个临时的访问锁控制机制

动机<o:p></o:p>

我们经常发现一个对象经常调度一个返回更改结果的通知。被调度的对象必须控制其内部状态,以同步对象数据。如果同时对一个对象进行多个更改操作,将会产生多个通知并产生一个并发的操作。此时在你的类中加入一个lock pattern的模式,从面提供一个临时锁控制机。从而避免不必要的通知。

我们通过Tbag类来学习:<o:p></o:p>

TBag提供了collection的行为。每次更改Tbag将调度OnChange事件。如果我们一次对Tbag加入多个对象你将得到多个更改通知。一个图形组件可能会进行多次刷新操作。引入lock pattern在加入对象前打开Tbag的锁,操作完后关闭锁。如此,我将得到单一的更改通知。更好的办法是加入一个标志,比如:FUpdating

应用

以下是Tbag类部分代码: (仅显示部分相关代码)

 <o:p></o:p>

type

  TBag = class (TObject)

  private

    FLockCnt: Integer;

  protected

    function Locked: Boolean;

    procedure SetLocking(Updating: Boolean);

  public

    procedure Lock;

    procedure UnLock;

  end;

 <o:p></o:p>

implementation

 <o:p></o:p>

procedure TBag.Lock;

begin

  Inc(FLockCnt);

  if FLockCnt = 1 then SetLocking(False);

end;

 <o:p></o:p>

function TBag.Locked: Boolean;

begin

  Result := (FLockCnt <> 0);

end;

 <o:p></o:p>

procedure TBag.SetLocking(Updating: Boolean);

begin

end;

 <o:p></o:p>

procedure TBag.UnLock;

begin

  Dec(FLockCnt);

  if FLockCnt = 0 then SetLocking(True);

end;

 <o:p></o:p>

Tbag说明:

·      FlockCnt保存锁机制的内部状态。FLockCnt = 0表示其处于非锁状态,其它值都表示其处于锁定状态。类Tbag通过LockUnlock来设置它的值。

·      LockUnlock提供了锁的接口,每一次调用都将引起锁的关态变化,并调用SetLocking方法。

·      SetLocking方法中有一个Updating的参数,Lock调用的参数为False,而Unlock调用的参数为True。对了,你可以在方法中插入一引起其它的代码,分配给它更多的操作表示它的锁状态的更改。.

·      Locked 返回类的锁状态。

注意:Lock Unlock必须同时使用,从而避免类保持在锁状态。明智的方法是使用try..finally块来保持Lock Unlock的同时调用。

 <o:p></o:p>

一个典型的应用例子:

 <o:p></o:p>

procedure TBag.Add(Item: Pointer);

begin

  { Add Item to internal structure }

  Change;

end

 <o:p></o:p>

procedure TBag.AddItems(Items: TList);

begin

  Lock;

  { Add multiple items }

  try

    for I := 0 to Items.Count - 1 do

      Add(Items[I]);

  finally

    { use try..finally to make sure Unlock is called }

    Unlock;

  end;

end;

 <o:p></o:p>

procedure TBag.Change;

begin

  if not Locked then

    if Assigned(FOnChange) then FOnChange(Self);

end;

 <o:p></o:p>

procedure TBag.SetLocking(Updating: Boolean);

begin

  if Updating then { Bag has become unlocked }

    Change;

  end;

分享到:
评论

相关推荐

    android-lockpattern v3的源码

    《Android LockPattern 源码解析》 在Android系统中,LockPattern是用户安全的重要组成部分,它为用户提供了一种图形化的解锁方式,既方便又安全。Android-lockpattern库是实现这一功能的核心组件,版本v3引入了更...

    android-lockpattern,安卓系统.zip

    【Android LockPattern】是安卓系统中的一个开源项目,主要用于实现用户身份验证的图形解锁方式。在Android 3.2.1 beta(46)版本中,这个组件被广泛使用,为用户提供了一种安全且直观的方式来保护他们的设备。下面...

    android-lockpattern_v3.0_src

    最新版的android lockpattern

    android-lockpattern的小demo

    这个是关于开源项目android-lockpattern为依赖而实现的图案(九宫格)解锁的实现方式,具体请看博文:http://blog.csdn.net/jan_s/article/details/43952521

    LockPattern 最好用的锁屏 高仿qq,支付宝

    【LockPattern:最佳锁屏应用,模仿QQ与支付宝体验】 LockPattern是一款优秀的锁屏应用程序,其设计灵感来源于QQ和支付宝的锁屏样式,为用户提供安全且便捷的屏幕保护功能。这款应用不仅注重实用,还追求用户体验,...

    LockPattern,.zip

    《Android应用开发:LockPattern库的深度解析与实践》 在Android应用开发中,为了提升用户的安全体验,很多开发者会选择引入锁屏模式作为一项重要的安全功能。LockPattern库,正如其名,为开发者提供了一个简单易用...

    cordova-plugin-lockpattern

    `cordova-plugin-lockpattern` 是一个专为 Cordova 应用程序设计的插件,主要用于在移动设备上实现图案解锁功能。Cordova 是一个流行的开源框架,它允许开发者使用标准的 web 技术(如 HTML、CSS 和 JavaScript)来...

    Android代码-LockPattern

    LockPattern Description Imitate Alipay gesture password 仿支付宝手势密码解锁 Starting 创建手势密码可以查看 CreateGestureActivity.java 文件. 登陆验证手势密码可以看 GestureLoginActivity.java 文件. ...

    LockPattern.zip

    "LockPattern.zip" 是一个与Android安全相关的源码包,主要涉及到的是Android设备上的解锁图案功能。这个压缩包包含了一系列的开发文件,用于构建和理解Android应用中的锁屏图案实现。下面将对其中的关键文件进行...

    LockPattern_java_totalgmj_

    本文将以"LockPattern_java_totalgmj_"为实例,深入探讨如何使用Java语言实现一个类似于QQ的手势解锁系统。 一、概述 "LockPattern_java_totalgmj_"项目是一个基于Java编程语言的九宫格手势解锁程序。它通过用户在...

    android-lockpattern_图案解锁_src.rar

    "android-lockpattern_图案解锁_src.rar"这个压缩包文件包含了图案解锁的相关源码,这对于开发者深入理解这一功能的工作原理及其实现方式具有很高的参考价值。接下来,我们将详细探讨Android图案解锁的基本概念、...

    android-lockpattern_图案解锁_src.7z

    android-lockpattern_图案解锁_src.7z

    锁屏LockPattern

    《深入解析:自定义锁屏界面LockPattern》 在移动设备的世界里,用户隐私和安全性的保护至关重要。其中,锁屏界面是用户的第一道防线,它不仅承担着防止他人随意访问设备的任务,还展示了用户的个性化风格。本篇将...

    android-lockpattern:Android 的锁定模式活动。来自 https

    android-lockpattern 版本:3.1.1 测试版(#44) 请随时与我们联系: 电子邮件: haibison.apps[at]gmail.com 简而言之,无论我们是否知道,您都可以在您的闭源/商业应用程序中使用这个库。 希望你喜欢它 :-) ...

    android-lockpattern:这是托管于 android-lockpattern 库的 AndroidStudioGradle 端口

    android-lockpattern 这是托管在以下位置的 android-lockpattern 库的 AndroidStudio/Gradle 端口: : 如何使用 设置Android SDK路径环境变量 $ export ANDROID_HOME= ' path to android sdk ' 推送到您的本地 ...

    android-lockpattern-图案解锁-src.rar

    本篇文章将深入解析Android的图案解锁(Pattern Lock)机制,涵盖其核心原理、实现流程及源码分析。 一、图案解锁概述 图案解锁是Android系统中的一项安全特性,用户通过在9个点构成的网格上画出特定的连续连线...

    lock pattern

    【标题】:“lock pattern” 【描述】:“lock pattern”是一种安全机制,常见于移动设备如Android智能手机和平板电脑上,用户通过在9个点组成的网格上绘制特定的图案来解锁设备。这种解锁方式结合了易用性和安全性...

    LockPattern:Android九宫格图案解锁

    LockPattern Android九宫格图案解锁 刚进入程序的时候,会让用户设置一个密码,设置完毕后,程序会自动退出。 再次进入程序的时候,就需要用户来画线解锁之前的图案了,当解锁成功的时候会自动跳到设置图案的界面。 ...

    九宫格锁屏lock pattern功能

    九宫格锁屏lock pattern功能源码,源码lock pattern,该功能实现我们比较熟悉一种九宫格锁屏(lock pattern)功能的,并且源码也比较详细的,大家可以学习看看,该源码由源码天堂android源码频道整理上传,。

    android-lockpattern:用于 UI 组件锁定模式的 Android 库

    android-lockpattern 许可证: 版本: 3.2.1 beta (#46) 项目页面: : 演示: : 对于开发人员: 、 。 ——特征要求:Android 2.1+(API 7+)。 支持:Eclipse IDE; Android Studio(支持处于测试阶段)。 没有依赖...

Global site tag (gtag.js) - Google Analytics