[Java lista] egyszerű kérdés :)
Böszörményi Péter
zmblevlist at gmail.com
2009. Aug. 16., V, 18:57:20 CEST
Egy megoldas a problemara:
public interface BusinessClass {
void method1();
int method2();
//...
}
public class osztABusinessClassImpl {
private oszA delegate;
public osztABusinessClassImpl(osztA delegate) {
this.delegate = delegate;
}
public void method1() {
delegate.method1();
}
public int method2() {
return delegate.method2();
}
}
Ugyanez a maradek osztalyokra is.
A lenyeg: bevezettek egy absztrakt fogalmat, ami a 3 osztalyra igaz. Ezt a
fogalmat a BusinessClass testesiti meg. Minden kodotok ettol az
interfacetol fugg. Megcsinaljatok a 3 delegalo megvalositast, aztan ahol
szukseg van ezekre az osztalyokra, ott factory, dependency injection
segisegevel szereztek referenciat. Hazi feladat: GOF Abstract Factory, es
GOF Bridge pattern tanulmanyozasa.
Huh, jo zavaros, remelem megerted.
On Sun, 16 Aug 2009 18:44:50 +0200, Huj Tamás <hujtomi at gmail.com> wrote:
> sziasztok!
>
> van 3 osztályom:
> osztA
> osztB
> osztC
>
> az osztályok majdnem teljesen ugyanolyanok csak üzleti szempontok
> miatt kellett különválasztani őket, de a tagváltozóik és a metódusaik
> nagy része megegyezik.
>
> és van egy Collectionom a példa kedvéért legyen egy lista.
>
> van egy metódusom ami ilyen típusú listákat dolgoz fel, és csak olyan
> metódusokat hív ami mind a 3 osztályban megvan, és most a feldolgozó
> függvénynél gyakorlatilag meg kell háromszorozni a kódot mert a
> megfelelő osztályra kell castolni. Valahogy így:
>
> public void feldolgoz(List lista){
>
> Iterator iterator = lista.iterator();
>
> while(iterator.hasNext()){
> Object o = iterator.next();
>
> if(o instanceof osztA){
> ((osztA)o).metodus1()
> } else if(o instanceof osztB){
> ((osztB)o).metodus1()
> } else if(o instanceof osztC){
> ((osztC)o).metodus1()
> }
> }
>
> }
>
> Ha egy közös itnerfészt implementálnának az osztályok akkor nem
> kellene a kódot megháromszorozni, és az jó lenne. De az a baj, hogy
> ezeket az osztályokat egy keretrendszer generálja egy ant-os buildelés
> során, és nem szabad belenyúlni a kódba, mert mindig úgyis
> újragenerálódik.
>
> Vajon meg lehetne oldani interfész nélkül ezt a problémát úgy hogy ne
> kellejen egy csomó helyen megháromszorozni a kódot?
>
> üdv,
> Tomi
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
--
Üdvözlettel,
Böszörményi Péter
További információk a(z) Javalist levelezőlistáról