Məzmuna keçin
  • Kateqoriyalar
  • Ən yeni
  • Teqlər
  • Populyar
Yığmaq
Brend loqosu
  1. Əsas səhifə
  2. Kompüter elmi
  3. Dizayn nümunələri
  4. Abstrakt fabrik (Abstract Factory Pattern)

Abstrakt fabrik (Abstract Factory Pattern)

Planlaşdırılıb Sabitlənib Kilidlənib Köçürülüb Dizayn nümunələri
abstractfabricpatternjavascriptcreational
1 Yazı 1 Yazarlar 47 Baxış
  • Ən köhnədən yeniyə
  • Ən yenidən köhnəyə
  • Ən çox səs
Cavab ver
  • Mövzu olaraq cavablandır
🔑 Daxil ol
Bu mövzu silindi. Yalnız mövzu idarəçiliyi imtiyazlarına malik olan istifadəçilər onu görə bilər.
  • codexC Oflayn
    codexC Oflayn
    codex
    üzərində yazmışdı sonuncu dəfə codex tərəfindən redaktə edilib
    #1

    Abstract Factory nümunəsi, konkret klasları(classes) göstərmədən, bir-biri ilə əlaqəli və ya asılı olan obyektlər ailəsini yaratmaq üçün bir interfeys təmin edir.

    Misal üçün

    // Abstrakt Məhsul
    class Button {
      render() {
        throw new Error("Bu metodu override edin!");
      }
    }
    

    Button klası abstrakt məhsuldur. O, bu klası genişləndirən hər hansı konkret məhsul tərəfindən mütləq yenidən yazılmalı olan render metodunu müəyyən edir.

    // Konkret Məhsul
    class WindowsButton extends Button {
      render() {
        console.log("Windows üslubunda düymənin göstərilməsi.");
      }
    }
    
    class MacOSButton extends Button {
      render() {
        console.log("MacOS üslubunda düymənin göstərilməsi.");
      }
    }
    

    WindowsButton və MacOSButton, Button klasını genişləndirən konkret məhsullardır. Onlar render metodunun spesifik realizasiyasını təmin edirlər.

    // Abstrakt fabrik
    class GUIFactory {
      createButton() {
        throw new Error("Bu metodu override edin!");
      }
    }
    

    GUIFactory klası abstrakt fabrikdir. O, bu klası genişləndirən hər hansı konkret fabrik tərəfindən mütləq yenidən yazılmalı olan createButton metodunu müəyyən edir.

    // Konkret fabrik
    class WindowsFactory extends GUIFactory {
      createButton() {
        return new WindowsButton();
      }
    }
    
    class MacOSFactory extends GUIFactory {
      createButton() {
        return new MacOSButton();
      }
    }
    

    WindowsFactory və MacOSFactory, GUIFactory klasını genişləndirən konkret fabriklərdir. Onlar createButton metodunun spesifik realizasiyasını təmin edirlər və müvafiq olaraq WindowsButton və MacOSButton instansiyalarını qaytarırlar.

    // Klient tərəfin kodu
    function createUI(factory) {
      const button = factory.createButton();
      button.render();
    }
    

    createUI funksiyası, fabriki istifadə edərək düymə yaratmaq və render etmək üçün klient kodudur. Bu funksiya fabriki arqument olaraq qəbul edir, fabrikin createButton metodunu çağırır və düyməni alır, sonra isə düymənin render metodunu çağırır.

    İstifadəsi

    const windowsFactory = new WindowsFactory();
    createUI(windowsFactory);
    
    const macFactory = new MacOSFactory();
    createUI(macFactory);
    

    Xülasə

    Burada, biz WindowsFactory və MacOSFactory instansiyalarını yaradıb, onları createUI funksiyasına ötürürük. Bu, kodun fərqli fabriklərlə işləyərək düymələri müxtəlif üslublarda yaratma və render etmə üsulunu nümayiş etdirir. Abstract Factory nümunəsi klient kodunun yaratması lazım olan obyektlərin konkret klaslardan ayrılmasına imkan verir, bu da çeviklik və genişlənə bilənlik təmin edir.

    1 cavab Son cavab
    Cavab ver
    • Mövzu olaraq cavablandır
    🔑 Daxil ol
    • Ən köhnədən yeniyə
    • Ən yenidən köhnəyə
    • Ən çox səs




    Bilik paylaşdıqca artan bir sərvətdir
    • Daxil ol

    • Sizin hesabınız yoxdur? Qeydiyyatdan keç

    • Axtarış etmək üçün daxil olun və ya qeydiyyatdan keçin.
    • İlk yazı
      Son yazı
    0
    • Kateqoriyalar
    • Ən yeni
    • Teqlər
    • Populyar