1

在下面的代码片段中,我有两个具有完全相同的过程名称的类。这些过程中的代码有很大的不同。是否有可能将这些类合并起来,以便于维护和未来的增强,或者我是否以可接受的方式解决这个问题?

type
  TMFRCore = class
    private
      FGridMain: TNextGrid;
      FGridSummary: TNextGrid;
    public
      constructor Create(Grid: TNextGrid; SummaryGrid: TNextGrid);
      destructor Destroy; override;
      procedure SetRowColour(Grid: TNextGrid; Row: Integer; Color: TColor; Start: Integer = 0);
      procedure OnSummaryDblClick(Sender: TObject);
      function GetSectionId(Section: String): Integer;

      property GridMain: TNextGrid read FGridMain write FGridMain;
      property GridSummary: TNextGrid read FGridSummary write FGridSummary;
  end;

type
  TMFRDates = class(TMFRCore)
    public
      procedure UpdateSummary;
      procedure UpdateMain(const sAircraft: string);
  end;

type
  TMFRHours = class(TMFRCore)
    public
      procedure UpdateSummary;
      procedure UpdateMain(const sAircraft: string);
  end;

我初始化这些类如下;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  MFRHours := TMFRHours.Create(gridHours, gridHoursSummary);
  MFRDates := TMFRDates.Create(gridDates, gridDatesSummary);
end;
4

1 回答 1

3

您可以在基类中将方法声明为虚拟(也可能是抽象的),这样您就可以利用动态分派和多态性,但除此之外,实际上没有其他东西可以整合。这些类共有的所有东西都已经在一个基类中了。添加这些声明实际上意味着您有更多的代码,因为您仍然需要保留现有的方法声明和实现。

于 2013-06-09T03:07:41.523 回答