⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basebounit.pas

📁 随便说说最近项目中的三层架构吧。讲点实际的东西。我最讨厌空讲道理。网上讲道理的太多了
💻 PAS
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -