Building a data-driven UI
We can now build the GUI of the app, using the services provided by the data access layer we just built.
The data access logic has been implemented and it is available through the IToDoData
interface. This should be the only way for the UI logic to access data. That is, we are going to implement the GetToDoData
method in the main form’s unit that will return the reference to the data access interface. The following is the code for that:
uses uDMToDo; function TFormToDo.GetToDoData: IToDoData; begin if DMToDo = nil then DMToDo := TDMToDo.Create(Application); Result := DMToDo; end;
In this way, we have achieved true plugin architecture. If we decide to change the underlying database access logic, the database access framework, or the database platform, we only need to make sure that the new class implements the IToDoData
interface, which is available to the GUI code through the GetToDoData
method...