diff --git a/src/schrauben/Client.java b/src/schrauben/Client.java new file mode 100644 index 0000000000000000000000000000000000000000..ebd4fae9a9e84d208a0305da90e3cb0ebe0a993f --- /dev/null +++ b/src/schrauben/Client.java @@ -0,0 +1,34 @@ +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(); + } + } +} diff --git a/src/schrauben/IAbstrakteFabrik.java b/src/schrauben/IAbstrakteFabrik.java new file mode 100644 index 0000000000000000000000000000000000000000..1af944f7833c1e22bf5efebc8dcb62d5d749e673 --- /dev/null +++ b/src/schrauben/IAbstrakteFabrik.java @@ -0,0 +1,9 @@ +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(); +} diff --git a/src/schrauben/IMutter.java b/src/schrauben/IMutter.java new file mode 100644 index 0000000000000000000000000000000000000000..5e75bd940f3216ab1e6c5251f70bf60ed46e9f1c --- /dev/null +++ b/src/schrauben/IMutter.java @@ -0,0 +1,6 @@ +package schrauben; + +public interface IMutter +{ + public void printMutter(); +} diff --git a/src/schrauben/ISchraube.java b/src/schrauben/ISchraube.java new file mode 100644 index 0000000000000000000000000000000000000000..5a862ddc14bc1a49a310200161d27e0155e4cbfc --- /dev/null +++ b/src/schrauben/ISchraube.java @@ -0,0 +1,6 @@ +package schrauben; + +public interface ISchraube +{ + public void printSchraube(); +} diff --git a/src/schrauben/KonkreteFabrikM10.java b/src/schrauben/KonkreteFabrikM10.java new file mode 100644 index 0000000000000000000000000000000000000000..3c383742827c4e3375b809315b179454f3d9ef28 --- /dev/null +++ b/src/schrauben/KonkreteFabrikM10.java @@ -0,0 +1,14 @@ +package schrauben; + +public class KonkreteFabrikM10 implements IAbstrakteFabrik +{ + public ISchraube erzeugeSchraube() + { + return new SchraubeM10(); + } + + public IMutter erzeugeMutter() + { + return new MutterM10(); + } +} diff --git a/src/schrauben/KonkreteFabrikM6.java b/src/schrauben/KonkreteFabrikM6.java new file mode 100644 index 0000000000000000000000000000000000000000..08492e863f5f66d28f5b07fbef5e3948999fcdfd --- /dev/null +++ b/src/schrauben/KonkreteFabrikM6.java @@ -0,0 +1,14 @@ +package schrauben; + +public class KonkreteFabrikM6 implements IAbstrakteFabrik +{ + public ISchraube erzeugeSchraube() + { + return new SchraubeM6(); + } + + public IMutter erzeugeMutter() + { + return new MutterM6(); + } +} diff --git a/src/schrauben/MutterM10.java b/src/schrauben/MutterM10.java new file mode 100644 index 0000000000000000000000000000000000000000..4de428c140ab619b6d6e7afadd907bf1286ab878 --- /dev/null +++ b/src/schrauben/MutterM10.java @@ -0,0 +1,9 @@ +package schrauben; + +public class MutterM10 implements IMutter +{ + public void printMutter() + { + System.out.println ("Mutter mit M10 Gewinde."); + } +} diff --git a/src/schrauben/MutterM6.java b/src/schrauben/MutterM6.java new file mode 100644 index 0000000000000000000000000000000000000000..b07db3aa76ffaa038d34eecc2846ca5945b857dc --- /dev/null +++ b/src/schrauben/MutterM6.java @@ -0,0 +1,9 @@ +package schrauben; + +public class MutterM6 implements IMutter +{ + public void printMutter() + { + System.out.println ("Mutter mit M6 Gewinde."); + } +} diff --git a/src/schrauben/SchraubeM10.java b/src/schrauben/SchraubeM10.java new file mode 100644 index 0000000000000000000000000000000000000000..14c196ce22a5bfbd3b32c49271db3a8d1b0342c8 --- /dev/null +++ b/src/schrauben/SchraubeM10.java @@ -0,0 +1,9 @@ +package schrauben; + +public class SchraubeM10 implements ISchraube +{ + public void printSchraube() + { + System.out.println ("Schraube mit M10 Gewinde."); + } +} diff --git a/src/schrauben/SchraubeM6.java b/src/schrauben/SchraubeM6.java new file mode 100644 index 0000000000000000000000000000000000000000..4ffa1ab82456b930c5daa27bc45ed207d6348508 --- /dev/null +++ b/src/schrauben/SchraubeM6.java @@ -0,0 +1,9 @@ +package schrauben; + +public class SchraubeM6 implements ISchraube +{ + public void printSchraube() + { + System.out.println ("Schraube mit M6 Gewinde."); + } +} diff --git a/src/schrauben/Test.java b/src/schrauben/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..94bf4979854b5e281d10df8d4c06875447f223cf --- /dev/null +++ b/src/schrauben/Test.java @@ -0,0 +1,19 @@ +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(); + } +}