Jo jag har förstått det och det är därför jag försöker förstå hur man skall skriva istället. Vilket är därför jag frågade och jag förstår fortfarande inte :P
Ska man ha helt separerade klasser istället för if-satser? Hur vet jag då vilken klass jag skall anropa om jag inte använder IF-satser??
Jo istället för att ha medlemmarna:
Type
Calculate()
Så säger ju klassnamnet dig vilken typ klassen representerar samt vilken uträkning som skall utföras.
Jag tycker detta är extremt användbart för att få bort tusenraders koder med if else if osv.
Jag anser att det är bättre att ha flera klasser med mindre kodrader i än färre klasser med fler kodrader.
Jag vill snabbt kunna ta fram koden som jag vill arbeta med och då tycker jag det är smidigt att ha en första uppdelning i klasser.
Jo jag har förstått det och det är därför jag försöker förstå hur man skall skriva istället. Vilket är därför jag frågade och jag förstår fortfarande inte :P
Ska man ha helt separerade klasser istället för if-satser? Hur vet jag då vilken klass jag skall anropa om jag inte använder IF-satser??
Du kan antagligen inte få bort _alla_ if-satser - men genom att refaktorera och omstrukturera kan "onödiga" if-satser, som i ditt exempel, plockas bort.
Du behöver inte veta vilken klass du ska anropa, alla anrop görs genom den abstrakta klassen.
public static void Main() {
...
AbstractBondProfile abf = otherClass.getBondInstance();
// Eller: AbstractBondProfile abf = new BOTBondProfile();
// Eller: AbstractBondProfile abf = new BTPBondProfile();
abf.calculate();
}
Som du ser kommer instansen vara av den abstrakta klassen, men referensen går till en implementation av den abstrakta klassen (BOTBondProfile/BTPBondProfile).
Jahaaaaa, men då så :) Jag förstår konceptet tror jag men jag förstod inte riktigt hur det skulle implementeras. Eller ja, jag har gjort liknande tidigare men tänkte att detta kanske var något annat. Nu förstår jag. Tack alla! :)
För att tillägga till Ledel's svar: otherClass.getBondInstance() returnerar ett objekt av godtycklig typ - så länge objektet som returneras ärver från AbstractBondProfile kommer allting att gå fin-fint. Objektorientering!
133 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe