Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Dajte ideju. Ponavljanje slicnog koda

[es] :: Java :: Dajte ideju. Ponavljanje slicnog koda

[ Pregleda: 1132 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kolani83

Član broj: 170859
Poruke: 43
*.invej.rs.



Profil

icon Dajte ideju. Ponavljanje slicnog koda12.04.2013. u 08:10 - pre 134 meseci
Imam algoritam koji racuna nesto. E sada taj algoritam se ponavlja na vise mesta s tim sto u nekoj situciji zove jednu metodu za izracunavanje a u nekoj drugi.
Ponavlaj mi se isti kod na vise mesta koji se razlikuje za jedan red.
Potrbna mi je ideja kako to da spakujem u jedan i na osnovu parametra u metodi algoritma da zove tu metodu koja je potrbna.
Java Enum da bude parametar ili ...
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9517
89.216.32.*



+10255 Profil

icon Re: Dajte ideju. Ponavljanje slicnog koda12.04.2013. u 08:20 - pre 134 meseci
Smestiš taj kod u jednu funkciju, i pozivaš funkciju sa nekim parametrom. U zavisnosti od parametra, koristiš pojedinosti iz koda.
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

kolani83

Član broj: 170859
Poruke: 43
*.invej.rs.



Profil

icon Re: Dajte ideju. Ponavljanje slicnog koda12.04.2013. u 10:56 - pre 134 meseci
Da li je dobro resenje da koristin Enum
public enum Method {
METHOD1,METHOD2
}

public int calculate(int x, Method){
switch (METHOD) {
case METHOD1:
return method1(x);


case METHOD2:
return method2(x);
}
}

public method1(int x){
//do some
}
public method2(int x){
//do some
}
 
Odgovor na temu

branecns
Branislav Černić
Novi Sad

Član broj: 28805
Poruke: 40
*.dynamic.kdsinter.net.



Profil

icon Re: Dajte ideju. Ponavljanje slicnog koda12.04.2013. u 19:08 - pre 134 meseci
Citat:
kolani83:
Imam algoritam koji racuna nesto. E sada taj algoritam se ponavlja na vise mesta s tim sto u nekoj situciji zove jednu metodu za izracunavanje a u nekoj drugi.
Ponavlaj mi se isti kod na vise mesta koji se razlikuje za jedan red.
Potrbna mi je ideja kako to da spakujem u jedan i na osnovu parametra u metodi algoritma da zove tu metodu koja je potrbna.
Java Enum da bude parametar ili ...


Umesto da pozivas calculate metod koji ima enum kao paramatar, stavi 'direktno' tvoj methodx kao parametar. E sad, posto java to bas tako direktno ne moze, mozes umesto toga kao parametar da podmetnes objekat koji ce biti nosac tih methodx() metoda. Napravis prvo interfejs, primera radi:

Code:

public interface Computable {
    int compute();
}


Pa ga onda implementiras, to bi znaci bio konkretno tvoj method1:

Code:

public class ComputatorA implements Computable {
    @Override
    public int compute() {
        return 1;
    }
}


I sad tvoj glavni calculate metod izgleda nekako ovako:

Code:

public int calculate(Computable c) {
    // ...
    int res = c.compute();
    // ...
}


A njegovi pozivi su

Code:

calculate(new ComputatorA());
calculate(new ComputatorB());
...


Na taj nacin si ponasanje jednog metoda specijalizovao drugim metodom koga prenosis kao parametar. Pogledaj npr klasu Arrays i static metode za sortiranje. Oni kao parametar primaju referencu na komparator, ciji compare metodi specijalizuju osnovni sort metod.
 
Odgovor na temu

[es] :: Java :: Dajte ideju. Ponavljanje slicnog koda

[ Pregleda: 1132 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.