[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