Metoda fabrykujaca

Metoda fabrykująca to wzorzec projektowy, który ma za zadanie tworzenie nowych obiektów. Obiekty te są nieokreślonego typu, ale są one powiązane na podstawie klas, z których dziedziczą lub interfejsów, które implementują. Wzorzec ten tworzy się przez zdefiniowanie interfejsu do tworzenia obiektów, ale dopiero klasy implementujące ten interfejs decydują obiekt jakiej klasy ma być stworzony.

Przykład użycia metody fabrykującej:

  1. public abstract class Screen {
  2.     public abstract void on();
  3.     public abstract void off();
  4. }
  5. public class LCDScreen extends Screen {
  6.     public void on() {
  7.         System.out.print("LCD is on");
  8.     }
  9.     public void off() {
  10.         System.out.print("LCD is off");
  11.     }
  12. }
  13. public class CRTScreen extends Screen {
  14.     public void on() {
  15.         System.out.print("CRT is on");
  16.     }
  17.     public void off() {
  18.         System.out.print("CRT is off");
  19.     }
  20. }
  21. // interfejs z metodą fabrykującą zwracającą obiekty dziedziczące po klasie Screen
  22. public interface ScreenFactory {
  23.     public Screen createScreen();
  24. }
  25. // implementacja interfejsu ScreenFactory z metodą fabrykującą obiekty klasy LCDScreen.
  26. public class LCDScreenFactory implements ScreenFactory {
  27.     public Screen createScreen() {
  28.         return new LCDScreen();
  29.     }
  30. }
  31. // implementacja interfejsu ScreenFactory z metodą fabrykującą obiekty klasy CRTScreen.
  32. public class CRTScreenFactory implements ScreenFactory {
  33.     public Screen createScreen() {
  34.         return new CRTScreen();
  35.     }
  36. }
  37. // zastosowanie metody fabrykującej createScreen.
  38. public class Main {
  39.     public static void main(String[] args) {
  40.         ScreenFactory sf = new CRTScreenFactory();
  41.         Screen screen = sf.createScreen();
  42.         screen.on();
  43.         screen.off();
  44.         sf = new LCDScreenFactory();
  45.         screen = sf.createScreen();
  46.         screen.on();
  47.         screen.off();
  48.     }
  49. }

Przykład metody fabrykującej z parametrem:

  1. public class RealScreenFactory {
  2.     public enum ScreenType {CRT,LCD}
  3.     public static Screen createScreen(ScreenType screenType) {
  4.         switch (screenType) {
  5.             case CRT:
  6.                 return new CRTScreen();
  7.             case LCD:
  8.                 return new LCDScreen();
  9.         }
  10.         return null;
  11.     }
  12. }
  13. public class Main {
  14.     public static void main(String[] args) {
  15.         Screen screen = RealScreenFactory.createScreen(RealScreenFactory.ScreenType.CRT);
  16.         screen.on();
  17.         screen.off();
  18.     }
  19. }

Komentarze

Dodaj nowy komentarz

  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Znaki końca linii i akapitu dodawane są automatycznie.

Więcej informacji na temat formatowania

CAPTCHA
Jakie znaki widnieją na obrazku?
Image CAPTCHA
Przepisz ciąg znaków z obrazka.