| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Feb 2004 Ort: Dresden
Beiträge: 105
| Custom namespace vs internal interface
Ich habe eine AS-Library. Die Library enthält Klassen. Die Klassen besitzen getter und setter Methoden. Der Anwender der Library soll nur die getter- Methoden aufrufen dürfen. Intern müssen aber die setter Methoden verfügbar sein. Konzept 1 (klappt nicht) ---------------------------------------------------- - public getter Code:
Code:
Konzept 2 (klappt) ---------------------------------------------------- - public getter Code:
Code:
Nachteil: Man schreibt sich einen Ast und kann außerdem die Vorteile der setter nicht verwenden: Code:
Konzept 3 (klappt) ---------------------------------------------------- - Interface für die getter Code:
Code:
Nachteil: Der Anwender kann stets auch das interne Interface ansprechen. Man hat eine Reihe an zusätzlichen Interfaces. Konzept 4 (klappt) ---------------------------------------------------- Alle getter und setter in einem Interface und genaue Dokumenentation, wann welche Methode erlaubt ist. Vorteil: Kein Ast, keine doppelten Interfaces. Nachteil: Ja. Wie würden Sie entscheiden ... |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Feb 2004 Ort: Dresden
Beiträge: 105
|
Edit: Nachteil von namespaces ist auch, dass man intern gegen die Implementierung programmieren muss. Nachteil von "internen" Interfaces ist definitiv, dass die IDE die internen Interfaces als Vorschlag der Code-completion ausspuckt. Hier kann man evtl. ein anderes Naming- Schema anwenden. Statt IValueInternal extends IValue z.B. IInternalValue extends IValue. Der Nutzer kann auch immer seine Instanz mit der Implementierung typisieren und erhält Zugriff auch auf die "internen" Methoden. Geändert von kakenbok (30-04-2009 um 09:23 Uhr) Grund: Neuer Nachteil |
| | |
| | #3 (permalink) |
| random Registriert seit: Jun 2001
Beiträge: 844
|
Hi, also das hier geht problemlos (Compiler / Runtime ): Code: private var _i:int;
private function set i( value:int):void
{
_i = value;
}
public function get i():int
{
return _i;
}
__________________ ------------------- ciao, blue |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Feb 2004 Ort: Dresden
Beiträge: 105
| Code:
Compiler: src\B.as(9): col: 4 Error: Unklarer Verweis auf i. >>>> i = 10; |
| | |
| | #5 (permalink) |
| random Registriert seit: Jun 2001
Beiträge: 844
|
Stimmt, im lfd. Projekt soll man so etwas auch nicht testen ![]() aber probier mal dies: Code: private var __i : int;
public function booking( val:int = 10 ):void
{
_i = val;
trace( 'i: ' + i );
}
public function get i():int
{
return _i;
}
private function set _i( value:int ) : void
{
__i = value;
}
private function get _i():int
{
return __i;
}
__________________ ------------------- ciao, blue |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Feb 2004 Ort: Dresden
Beiträge: 105
|
Das zähle ich also als Stimme für "custom namespace". Die setter im ganz oben geschilderten Problem sollen übrigens wenigstens im namespace internal verfügbar sein, wenn nicht gar besser paketübergreifend. Den getter zu duplizieren ist natürlich nicht schick, wenn es auch _i++ möglich macht. |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |