basebounit.pas

来自「随便说说最近项目中的三层架构吧。讲点实际的东西。我最讨厌空讲道理。网上讲道理的太」· PAS 代码 · 共 92 行

PAS
92
字号
unit BaseBOUnit;

interface

uses
  Windows, Classes, DAOValueObjectUnit, IBaseBOUnit;

type

  PBaseBO = ^ TBaseBO;
  TBaseBO = class(TPersistent, IBaseBO)
    private
      fClass: String;
      DAOObj: TDAOValueObject;
    protected
      FRefCount: Integer;
      function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
      function _AddRef: Integer; stdcall;
      function _Release: Integer; stdcall; //以上是接口必须实现部分
    published
      function GetObject: TObject;
      procedure SetObject( value: TObject );
      function GetDAOValueObject: TDAOValueObject;
      procedure SetDAOValueObject(tmpDAOVO: TDAOValueObject);
      procedure InitBusinessObj; virtual;
    public
      property PDAOObj: TDAOValueObject read GetDAOValueObject write SetDAOValueObject;
      constructor Create;
      destructor Destroy; override;

  end;

implementation

constructor TBaseBO.Create;
begin
  inherited Create;
end;

function TBaseBO.QueryInterface(const IID: TGUID; out Obj): HResult;
begin
  if GetInterface(IID, Obj) then
    Result := 0
  else
    Result := E_NOINTERFACE;
end;

function TBaseBO._AddRef: Integer;
begin
  Result := InterlockedIncrement(FRefCount);
end;

function TBaseBO._Release: Integer;
begin
  Result := InterlockedDecrement(FRefCount);
  if Result = 0 then
    Destroy;
end;

function TBaseBO.GetObject: TObject;
begin
  Result := TObject(fClass);
end;

procedure TBaseBO.SetObject( value: TObject );
begin
  fClass := string(Value);
end;

procedure TBaseBO.SetDAOValueObject(tmpDAOVO :TDAOValueObject);
begin
  DAOObj := tmpDAOVO;
end;

function TBaseBO.GetDAOValueObject: TDAOValueObject;
begin
  Result := DAOObj;
end;

procedure TBaseBO.InitBusinessObj;
begin
end;

destructor TBaseBO.Destroy;
begin
  DAOObj.Free;
  inherited Destroy;
end;

  
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?