Skip to content
Snippets Groups Projects
Commit 2b53b3c7 authored by Peter Hertkorn's avatar Peter Hertkorn
Browse files

Add abstract factory example

parent c6a0a5bf
No related branches found
No related tags found
No related merge requests found
package schrauben;
public class Client
{
private IAbstrakteFabrik abstrakteFabrik = null;
private ISchraube abstraktesProduktA = null;
private IMutter abstraktesProduktB = null;
public void setAbstrakteFabrik (IAbstrakteFabrik fabrikRef)
{
this.abstrakteFabrik = fabrikRef;
}
public void erzeugeProdukte()
{
if (abstrakteFabrik != null)
{
abstraktesProduktA =
abstrakteFabrik.erzeugeSchraube();
abstraktesProduktB =
abstrakteFabrik.erzeugeMutter();
}
}
public void produktAusgabe()
{
if (abstraktesProduktA != null &&
abstraktesProduktB != null)
{
abstraktesProduktA.printSchraube();
abstraktesProduktB.printMutter();
}
}
}
package schrauben;
// IAbstrakteFabrik hat zwei Methoden. Jede erzeugt
// eine andere Instanz eines Produktes (IMutter und ISchraube).
public interface IAbstrakteFabrik
{
public ISchraube erzeugeSchraube();
public IMutter erzeugeMutter();
}
package schrauben;
public interface IMutter
{
public void printMutter();
}
package schrauben;
public interface ISchraube
{
public void printSchraube();
}
package schrauben;
public class KonkreteFabrikM10 implements IAbstrakteFabrik
{
public ISchraube erzeugeSchraube()
{
return new SchraubeM10();
}
public IMutter erzeugeMutter()
{
return new MutterM10();
}
}
package schrauben;
public class KonkreteFabrikM6 implements IAbstrakteFabrik
{
public ISchraube erzeugeSchraube()
{
return new SchraubeM6();
}
public IMutter erzeugeMutter()
{
return new MutterM6();
}
}
package schrauben;
public class MutterM10 implements IMutter
{
public void printMutter()
{
System.out.println ("Mutter mit M10 Gewinde.");
}
}
package schrauben;
public class MutterM6 implements IMutter
{
public void printMutter()
{
System.out.println ("Mutter mit M6 Gewinde.");
}
}
package schrauben;
public class SchraubeM10 implements ISchraube
{
public void printSchraube()
{
System.out.println ("Schraube mit M10 Gewinde.");
}
}
package schrauben;
public class SchraubeM6 implements ISchraube
{
public void printSchraube()
{
System.out.println ("Schraube mit M6 Gewinde.");
}
}
package schrauben;
public class Test
{
public static void main (String[] args)
{
Client c = new Client();
c.setAbstrakteFabrik (new KonkreteFabrikM6());
c.erzeugeProdukte();
c.produktAusgabe();
System.out.println();
c.setAbstrakteFabrik (new KonkreteFabrikM10());
c.erzeugeProdukte();
c.produktAusgabe();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment