當我們在Delphi中設計一個類時,通常我們有私有字段(成員),私有setter和getter方法以及公共屬性。從課外,只有公共財產才能訪問這些數據;該類的用戶甚至不知道存在getter方法。它是否違反了接口屬性訪問器的公共封裝?
所以getter和setter方法封裝的實例成員和財產封裝了getter和setter方法。
然而,定義一個接口,當我們揭露那些方法:
ICounter = interface
// I wouldn't want to specify these 2 methods in the interface, but I'm forced to
function GetCount: Integer;
procedure SetCount(Value: Integer);
property Count: Integer read GetCount write SetCount;
end;
實施具體類:
TCounter = class(TInterfacedObject, ICounter)
private
function GetCount: Integer;
procedure SetCount(Value: Integer);
public
property Count: Integer read GetCount write SetCount;
end
使用它:
var
Counter: ICounter;
begin
Counter := TCounter.Create;
Counter.Count := 0; // Ok, that's my public property
// The access should me made by the property, not by these methods
Counter.SetCount(Counter.GetCount + 1);
end;
如果屬性封裝getter/setter私有方法,是不是違規? getter和setter是具體類的內部,並且不會被暴露。
這聽起來像一個咆哮。你的問題是什麼? –
哪一點讓你感到困惑?這對我來說很有意義。 –
-1在您已經有三個答案後完全改變問題的性質。我反對你的發言,我的修改「改變了方向」。我的編輯把你的兩個問題放在標題中,這樣標題就成了一個恰當的問題。 *你的*是改變方向的編輯。 –